Share via


Denetim günlüğü sistemi tablo başvurusu

Önemli

Bu özellik Genel Önizlemededir.

Bu makalede denetim günlüğü tablosu şeması özetlenmiştir ve yaygın hesap kullanımı sorularını yanıtlamak için denetim günlüğü sistem tablosuyla kullanabileceğiniz örnek sorgular sağlanır. Denetim günlüğü olayları hakkında bilgi için bkz . Tanılama günlüğü başvurusu.

Denetim günlüğü sistem tablosu konumunda system.access.auditbulunur.

Denetim günlüğünde dikkat edilmesi gerekenler

  • Denetim günlüklerinin çoğu yalnızca çalışma alanının bölgesinde kullanılabilir.
  • Tüm bölgelerde yalnızca Unity Kataloğu hesap düzeyi günlükleri kullanılabilir.
  • Hesap düzeyinde denetim günlükleri olarak 0kaydedilirworkspace_id.

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 Zaman damgası 2023-01-01T01:01:01.123
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 yakalanan olayın kategorisi getTable
request_id Dize İsteğin kimliği ServiceMain-4529754264
request_params map 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 struct Yanıt dönüş değerlerinin yapısı {"statusCode": 200, "errorMessage": null, "result": null}
audit_level Dize Çalışma alanı veya hesap düzeyi olayı ACCOUNT_LEVEL
account_id Dize Hesabın kimliği 23e22ba4-87b9-4cc2-9770-d10b894bxx
event_id Dize Olayın kimliği 34ac703c772f3549dcc8671f654950f0

Örnek sorgular

Aşağıdaki bölümler, denetim günlükleri sistem tablonuzla ilgili içgörüler elde etmek için kullanabileceğiniz örnek sorguları içerir. Bu sorguların çalışması için küme ayraçları {{}} içindeki değerleri kendi parametrelerinizle değiştirin.

Not

Bu örneklerden bazıları, 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, bir tabloda hangi kullanıcıların izinlerine sahip olduğunu bulmak için öğesini information_schema kullanır.

SELECT DISTINCT(grantee) AS `ACCESSIBLE BY`
FROM system.information_schema.table_privileges
WHERE table_schema = '{{schema_name}}' AND table_name = '{{table_name}}'
  UNION
    SELECT table_owner
    FROM system.information_schema.tables
    WHERE table_schema = '{{schema_name}}' AND table_name = '{{table}}'
  UNION
    SELECT DISTINCT(grantee)
    FROM system.information_schema.schema_privileges
    WHERE schema_name = '{{schema_name}}'

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

Not

Tam adlar DML işlemleri için günlükte yakalanmaz. Tümünü yakalamak için şemayı ve basit adı 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 = '{{catalog.schema.table}}'
  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 '1 day'
ORDER BY event_date DESC

Kullanıcı hangi tablolara erişmiş?

Not

Tarih aralığına göre filtrelemek için sorgunun en altındaki date yan tümcesini kaldırın.

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) < 1
        -- 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, komutu çalıştıran kullanıcıyla birlikte en son çalıştırılan not defteri komutlarını döndürür.

Not

Eylem runCommand yalnızca ayrıntılı denetim günlükleri etkinleştirildiğinde yayılır. 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