Aracılığıyla paylaş


Denetim kayıt sistemi tablo referansı

Önemli

Bu sistem tablosu Genel Önizlemeiçindedir. Tabloya erişmek için şemanın system kataloğunuzda etkinleştirilmesi gerekir. Daha fazla bilgi için bkz. sistem tablosu şemalarını etkinleştirme.

Bu makalede denetim günlüğü tablosu şeması özetlenmiştir ve sık sorulan hesap etkinliği sorularını yanıtlamak için denetim günlüğü sistem tablosuyla kullanabileceğiniz örnek sorgular bulunur. Denetim günlüğü olayları hakkında bilgi için Tanılama günlüğü referansına bkz.

Tablo yolu: Bu sistem tablosu system.access.auditkonumunda bulunur.

Denetim günlüğünde dikkat edilmesi gerekenler

  • Denetim günlüklerinin çoğu yalnızca çalışma alanının bölgesinde kullanılabilir.
  • Hesap düzeyinde denetim günlükleri, `workspace_id` olarak `0` şeklinde kaydeder.

Denetim günlüğü sistem tablosu şeması

Denetim günlüğü sistem tablosu aşağıdaki şemayı kullanır:

Sütun adı Veri türü Açıklama Örnek
version Dize Denetim günlüğü şema sürümü 2.0
event_time timestamp Olayın zaman damgası. Saat dilimi bilgileri değerin sonunda UTC saat dilimini temsil eden +00:00 kaydedilir. 2023-01-01T01:01:01.123+00:00
event_date tarih Eylemin gerçekleştiği takvim tarihi 2023-01-01
workspace_id uzun Çalışma alanının kimliği 1234567890123456
source_ip_address Dize İsteğin kaynaklandığı IP adresi 10.30.0.242
user_agent Dize İsteğin kaynağı Apache-HttpClient/4.5.13 (Java/1.8.0_345)
session_id Dize İsteğin geldiği oturumun kimliği 123456789
user_identity Dize İstek başlatan kullanıcının kimliği {"email": "user@domain.com",
"subjectName": null}
service_name Dize İstek başlatan hizmet adı unityCatalog
action_name Dize Denetim günlüğünde kaydedilen olayın kategorisi getTable
request_id Dize İsteğin kimliği ServiceMain-4529754264
request_params harita Tüm istek parametrelerini içeren anahtar değerlerinin haritası. İstek türüne bağlıdır [["full_name_arg", "user.chat.messages"],
["workspace_id", "123456789"],
["metastore_id", "123456789"]]
response yapı Yanıt dönüş değerlerinin yapısı {"statusCode": 200, "errorMessage": null,
"result": null}
audit_level Dize Çalışma alanı veya hesap düzeyi etkinliği ACCOUNT_LEVEL
account_id Dize Hesabın kimliği 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id Dizgi Olayın kimliği 34ac703c772f3549dcc8671f654950f0
identity_metadata struct Eyleme dahil olan kimlikler arasında run_by ve run_asbulunmaktadır. Bkz. Denetim grubuna atanmış işlem etkinliği. {run_by: example@email.com;
run_as: example@email.com;

Örnek sorgular

Aşağıdaki bölümler, denetim günlükleri sistem tablonuz hakkında içgörü elde etmek için kullanabileceğiniz örnek SQL sorgularını içerir.

Not

Bazı örnekler, varsayılan olarak etkin olmayan ayrıntılı denetim günlüğü olaylarını içerir. Çalışma alanında ayrıntılı denetim günlüklerini etkinleştirmek için bkz . Ayrıntılı denetim günlüklerini etkinleştirme.

Bu makale aşağıdaki örnek sorguları içerir:

Bu tabloya kimler erişebilir?

Bu sorgu, tabloda hangi kullanıcıların izinlerine sahip olduğunu belirlemek için information_schema kullanır. Katalog, şema ve tablo adı parametreleri için değerleri girin.

SELECT DISTINCT(grantee), privilege_type, 'catalog' AS level
FROM system.information_schema.catalog_privileges
WHERE
  catalog_name = :catalog_name
UNION
SELECT DISTINCT(grantee), privilege_type, 'schema' AS level
FROM system.information_schema.schema_privileges
WHERE
  catalog_name = :catalog_name AND schema_name = :schema_name
UNION
SELECT DISTINCT(grantee) AS `accessible by`, privilege_type, 'table' AS level
FROM
  system.information_schema.table_privileges
WHERE
  table_catalog = :catalog_name AND table_schema = :schema_name AND table_name = :table_name
UNION
SELECT table_owner, 'ALL_PRIVILEGES' AS privilege_type, 'owner' AS level
FROM system.information_schema.tables
WHERE
  table_catalog = :catalog_name AND table_schema = :schema_name AND table_name = :table_name

Son yedi gün içinde tabloya hangi kullanıcılar erişmiş ?

Bu sorgunun çalışması için sorgu parametrelerine tablo yolu bilgilerini girin.

Not

Tam adlar, DML işlemleri için günlükte kayıt altına alınmaz. Tümünü yakalamak için şema ve basit ismi ekleyin.

SELECT
  user_identity.email as `User`,
  IFNULL(
    request_params.full_name_arg,
    request_params.name
  ) AS `Table`,
  action_name AS `Type of Access`,
  event_time AS `Time of Access`
FROM
  system.access.audit
WHERE
  (
    request_params.full_name_arg = :table_full_name
    OR (
      request_params.name = :table_name
      AND request_params.schema_name = :schema_name
    )
  )
  AND action_name IN ('createTable', 'getTable', 'deleteTable')
  AND event_date > now() - interval 7 day
ORDER BY
  event_date DESC

Bir kullanıcı son zamanlarda hangi tablolara erişmiş?

Bu sorgunun çalışması için kullanıcının e-postasını :User parametresine ve :days_ago parametresine bir sayı girin.

SELECT
  action_name as `EVENT`,
  event_time as `WHEN`,
  IFNULL(request_params.full_name_arg, 'Non-specific') AS `TABLE ACCESSED`,
  IFNULL(request_params.commandText, 'GET table') AS `QUERY TEXT`
FROM
  system.access.audit
WHERE
  user_identity.email = :User
  AND action_name IN (
    'createTable',
    'commandSubmit',
    'getTable',
    'deleteTable'
  )
  AND datediff(now(), event_date) < :days_ago
ORDER BY
  event_date DESC

Örnek sonuç

EVENT WHEN TABLE ACCESSED QUERY TEXT
getTable 2023-05-31 system.access.audit GET table
getTable 2023-05-31 system.access.table_lineage GET table
commandSubmit 2023-05-31 Non-specific show functions;
commandSubmit 2023-05-31 Non-specific SELECT
request_params
FROM
system.access.audit
WHERE
service_name = "notebook"
AND action_name = "moveFolder"
LIMIT
5

Güvenliği sağlanabilir tüm nesneler için izin değişikliklerini görüntüleme

Bu sorgu, hesabınızda gerçekleşen her izin değişikliği için bir olay döndürür. Sorgu, değişikliği yapan kullanıcıyı, güvenli kılınabilir nesne türünü ve adını ve yapılan belirli değişiklikleri döndürür.

SELECT event_time, user_identity.email, request_params.securable_type, request_params.securable_full_name, request_params.changes
FROM system.access.audit
WHERE service_name = 'unityCatalog'
  AND action_name = 'updatePermissions'
ORDER BY 1 DESC

En son çalıştırılacak not defteri komutlarını görüntüleme

Bu sorgu, en son çalıştırılan not defteri komutlarını ve komutu çalıştıran kullanıcıyı döndürür.

Not

Eylem runCommand yalnızca ayrıntılı denetim günlükleri etkinleştirildiğinde oluşur. Ayrıntılı denetim günlüklerini etkinleştirmek için bkz Ayrıntılı denetim günlüklerini etkinleştirme.

SELECT event_time, user_identity.email, request_params.commandText
FROM system.access.audit
WHERE action_name = `runCommand`
ORDER BY event_time DESC
LIMIT 100

Bir Databricks uygulamasında hangi kullanıcılar oturum açtı?

Bu sorgu, databricks uygulama örneğinde her oturum açma işlemi için bir olay döndürür.

SELECT
  event_date,
  workspace_id,
  request_params.request_object_id as app,
  user_identity.email as user_email,
  user_identity.subject_name as username
FROM
  system.access.audit
WHERE
  action_name IN ("workspaceInHouseOAuthClientAuthentication", "mintOAuthToken", "mintOAuthAuthorizationCode")
AND
  request_params["client_id"] LIKE "{{application-ID}}"
GROUP BY
  event_date,
  workspace_id,
  app,
  user_email,
  username

{{application-ID}}'yi, belirli bir Databricks uygulamasına atanan hizmet sorumlusunun Uygulama Kimliği değeriyle değiştirin. Bu değer, uygulamayı barındıran Databricks çalışma alanının yönetici ayarlarında bulunabilir.

Hangi Databricks uygulamaları, uygulamanın diğer kullanıcılar veya gruplarla nasıl paylaşıldığını değiştirecek şekilde güncelleştirildi?

Bu sorgu, izin türü, yeni iznin atandığı kullanıcı veya grup ve değişikliği gönderen kullanıcı dahil olmak üzere Databricks uygulamalarına erişimi değiştirmek için izin güncelleştirmelerine yönelik olayları döndürür.

SELECT
  event_date,
  workspace_id,
  request_params['request_object_id'] as app,
  user_identity['email'] as sharing_user,
  acl_entry['group_name'],
  acl_entry['user_name'],
  acl_entry['permission_level']
FROM
  system.access.audit t
LATERAL VIEW
  explode(from_json(request_params['access_control_list'], 'array<struct<user_name:string,permission_level:string,group_name:string>>')) acl_entry AS acl_entry
WHERE
  action_name = 'changeAppsAcl'
AND
  request_params['request_object_type'] = 'apps'
ORDER BY
  event_date DESC