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.audit
konumunda 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_as bulunmaktadı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?
- Son yedi gün içinde tabloya hangi kullanıcılar erişmiş ?
- Bir kullanıcı son zamanlarda hangi tablolara erişmiş?
- Güvenliği sağlanabilir tüm nesneler için izin değişikliklerini görüntüleme
- En son çalıştırılacak not defteri komutlarını görüntüleme
- Bir Databricks uygulamasında hangi kullanıcılar oturum açtı?
- 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 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