Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La journalisation et la supervision efficaces vous aident à détecter et à répondre aux événements de sécurité dans Databricks Apps. Les applications génèrent des journaux d’audit au niveau de l’application et des journaux d’audit de plateforme, que vous pouvez utiliser pour les diagnostics, le suivi des performances et l’analytique de sécurité.
Journaux d’activité d’application
Pour rendre les logs disponibles dans l'interface utilisateur des Applications Databricks ou via l'URL de votre application, votre application doit écrire la sortie dans stdout et stderr.
Accédez aux journaux d’application de la manière suivante :
- Interface utilisateur des applications : Dans la page détails de l’application, cliquez sur l’onglet Journaux pour afficher la sortie et l’erreur standard. Pour plus d’informations, consultez Afficher les détails d’une application Databricks.
-
URL directe : Ajoutez
/logzà l’URL de votre application. Par exemple, si l’URL de votre application esthttps://my-app-1234567890.my-instance.databricksapps.com, les logs sont disponibles surhttps://my-app-1234567890.my-instance.databricksapps.com/logz.
Remarque
Azure Databricks ne conserve pas les journaux lorsque le calcul de l’application s’arrête. Pour la journalisation persistante, intégrez-les à des services de journalisation externes ou écrivez des journaux dans des volumes ou des tables de catalogue Unity.
Intégrer à des services de journalisation externes
Pour la journalisation persistante et les fonctionnalités de supervision avancées, utilisez les éléments suivants :
- Outils APM (Application Performance Monitoring) : Utilisez New Relic, Datadog ou des outils de surveillance des performances d’application similaires pour collecter et analyser les journaux, les métriques et les traces.
- Persistance des journaux personnalisée : Écrivez régulièrement des journaux dans des volumes ou des tables de catalogue Unity pour le stockage et l’analyse à long terme.
Consultez les pratiques de journalisation recommandées pour obtenir des conseils sur la mise en forme et le contenu du journal.
Pratiques de loggage recommandées
Pour intégrer des systèmes d’alerte en temps réel et de supervision externe :
- Mettre en forme les journaux d’activité dans JSON ou d’autres formats pouvant être analysés par l’ordinateur.
- Journaliser les événements pertinents pour la sécurité avec le contexte :
- Événements d’authentification et d’autorisation, y compris l’identité de l’utilisateur et le résultat
- Détails de l’accès aux données, tels que le catalogue, le schéma et les noms de tables
- Erreurs liées à la sécurité, telles que les jetons non valides, les refus d’autorisation et l’activité suspecte
- Transférer des journaux vers des systèmes externes. Intégrez des outils d’agrégation de journaux ou APM pour prendre en charge les alertes en temps réel, la réponse aux incidents de sécurité, l’utilisation et l’analytique des performances, et la corrélation avec les journaux système Azure Databricks.
Considérations relatives à la sécurité pour la journalisation des événements
Les applications Databricks sont conçues avec les contrôles intégrés suivants pour empêcher l’exfiltration des données :
- Accès à l’API uniquement : les applications peuvent uniquement accéder aux ressources Azure Databricks via des API Azure Databricks publiques. Ces API sont auditables via les journaux de table système.
- Communication chiffrée : tout le trafic d’API est chiffré à l’aide de TLS 1.2 ou version ultérieure pour garantir un transfert de données sécurisé.
Surveillance de la sécurité avec des tables système
Azure Databricks capture les journaux d’audit des activités liées à l’application dans la table system.access.audit. Vous pouvez interroger ces journaux pour suivre les actions des utilisateurs, les modifications de configuration des applications et les événements de sécurité.
Utilisez les journaux d’audit pour prendre en charge les scénarios de surveillance et de sécurité courants suivants :
- Suivez l’activité de connexion de l’application. Consultez les connexions de l'application.
- Surveillez les modifications d’autorisation. Consultez les modifications d’autorisation.
- Auditez la création et la modification de l’application. Consultez la création de l’application.
- Analysez le comportement de l’utilisateur dans les applications. Consultez les actions de l’utilisateur.
Utilisez les requêtes suivantes pour surveiller les activités liées à la sécurité et détecter les problèmes potentiels avec vos applications.
Surveiller les modifications d’autorisation d’application
Utilisez cette requête pour détecter les modifications d’autorisation d’application :
-- Monitor all app permission modifications in the last 30 days
WITH permission_changes AS (
SELECT
event_date,
workspace_id,
request_params.request_object_id AS app_name,
user_identity.email AS modified_by,
explode(from_json(
request_params.access_control_list,
'array<struct<user_name:string,group_name:string,permission_level:string>>'
)) AS permission
FROM system.access.audit
WHERE action_name = 'changeAppsAcl'
AND event_date >= current_date() - 30
)
SELECT
event_date,
app_name,
modified_by,
permission.user_name,
permission.group_name,
permission.permission_level
FROM permission_changes
ORDER BY event_date DESC
Identifier les applications avec des étendues d’API utilisateur
Utilisez cette requête pour rechercher des applications avec des étendues d’API utilisateur configurées :
-- Find apps created or updated in the last 30 days with user API scopes configured
SELECT
event_date,
get_json_object(request_params.app, '$.name') AS app_name,
user_identity.email AS creator_email,
get_json_object(request_params.app, '$.user_api_scopes') AS user_api_scopes
FROM system.access.audit
WHERE
action_name IN ('createApp', 'updateApp')
AND get_json_object(request_params.app, '$.user_api_scopes') IS NOT NULL
AND event_date >= current_date() - INTERVAL 30 DAYS
Suivre les actions d’autorisation utilisateur
Utilisez cette requête pour répertorier les actions d’application effectuées avec l’autorisation utilisateur :
-- List app actions performed on behalf of users in the last 30 days
WITH obo_events AS (
SELECT
event_date,
workspace_id,
audit_level,
identity_metadata.acting_resource AS app_id, -- OAuth App ID or name
user_identity.email AS user_email, -- Logged-in user
service_name,
action_name
FROM system.access.audit
WHERE event_date >= current_date() - 30
AND identity_metadata.acting_resource IS NOT NULL
)
SELECT
event_date,
app_id,
user_email,
service_name,
action_name,
audit_level,
COUNT(*) AS event_count
FROM obo_events
GROUP BY
event_date, app_id, user_email, service_name, action_name, audit_level
ORDER BY event_date DESC;
Supervision opérationnelle
Utilisez des tables système pour surveiller les aspects opérationnels de vos applications, tels que le coût et l’utilisation des ressources.
Surveiller les coûts de l’application
Surveillez les coûts databricks Apps à l’aide de la system.billing.usage table. Utilisez la requête suivante pour obtenir des informations de coût précises pour les applications par jour ou mois :
-- Get Databricks Apps cost by app per day for the last 30 days
SELECT
us.usage_date,
us.usage_metadata.app_id,
us.usage_metadata.app_name,
SUM(us.usage_quantity) AS dbus,
SUM(us.usage_quantity * lp.pricing.effective_list.default) AS dollars
FROM
system.billing.usage us
LEFT JOIN system.billing.list_prices lp
ON lp.sku_name = us.sku_name
AND us.usage_start_time BETWEEN lp.price_start_time AND COALESCE(lp.price_end_time, NOW())
WHERE
billing_origin_product = 'APPS'
AND us.usage_unit = 'DBU'
AND us.usage_date >= DATE_SUB(NOW(), 30)
GROUP BY ALL
Databricks Apps prend en charge les stratégies budgétaires pour faciliter le suivi des coûts. Pour plus d’informations sur la configuration des politiques budgétaires, consultez l’usage des attributs avec des politiques budgétaires sans serveur.