Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh berikut menunjukkan sebagian kueri yang mengembalikan semua permintaan anonim (tidak ditandatangani) dari tabel yang dibuat untuk log CloudTrail peristiwa. Kueri ini memilih permintaan tersebut tempatuseridentity.accountid
adalah anonim, danuseridentity.arn
tidak ditentukan:
SELECT *
FROM cloudtrail_logs
WHERE
eventsource = 's3.amazonaws.com' AND
eventname in ('GetObject') AND
useridentity.accountid = 'anonymous' AND
useridentity.arn IS NULL AND
requestparameters LIKE '%[your bucket name ]%';
Untuk informasi selengkapnya, lihat posting blog AWS Big Data Menganalisis keamanan, kepatuhan, dan aktivitas operasional menggunakan AWS CloudTrail Amazon Athena
Kueri bidang bersarang di log CloudTrail
KarenauserIdentity
danresources
adalah tipe data Nest, kueri mereka memerlukan perlakuan khusus.
ParameteruserIdentity
objek terdiri dari bersarangSTRUCT
jenis. Ini dapat bertanya menggunakan titik untuk memisahkan bidang, seperti dalam contoh berikut:
SELECT
eventsource,
eventname,
useridentity.sessioncontext.attributes.creationdate,
useridentity.sessioncontext.sessionissuer.arn
FROM cloudtrail_logs
WHERE useridentity.sessioncontext.sessionissuer.arn IS NOT NULL
ORDER BY eventsource, eventname
LIMIT 10
Parameterresources
bidang adalah sebuah larik dariSTRUCT
objek. Untuk larik ini, gunakanCROSS JOIN UNNEST
untuk unnest larik sehingga Anda dapat mengkueri objeknya.
Contoh berikut mengembalikan semua baris di mana sumber daya ARN berakhirexample/datafile.txt
. Untuk keterbacaan, fungsi replacearn:aws:s3:::
substring awal dari. ARN
SELECT
awsregion,
replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as s3_resource,
eventname,
eventtime,
useragent
FROM cloudtrail_logs t
CROSS JOIN UNNEST(t.resources) unnested (resources_entry)
WHERE unnested.resources_entry.ARN LIKE '%example/datafile.txt'
ORDER BY eventtime
Contoh kueri berikut untukDeleteBucket
peristiwa. Kueri mengekstraksi nama bucket dan ID akun yang bucket milikresources
objek.
SELECT
awsregion,
replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as deleted_bucket,
eventtime AS time_deleted,
useridentity.username,
unnested.resources_entry.accountid as bucket_acct_id
FROM cloudtrail_logs t
CROSS JOIN UNNEST(t.resources) unnested (resources_entry)
WHERE eventname = 'DeleteBucket'
ORDER BY eventtime
Untuk informasi selengkapnya tentang unnesting, lihatFilter array.
Kiat untuk menanyakan log CloudTrail
Pertimbangkan hal berikut saat menjelajahi data CloudTrail log:
-
Sebelum kueri log, verifikasi bahwa tabel log Anda terlihat sama dengan yang diBuat tabel untuk CloudTrail log di Athena menggunakan partisi manual. Jika tidak tabel pertama, menghapus tabel yang ada menggunakan perintah berikut:
DROP TABLE cloudtrail_logs
. -
Setelah Anda drop tabel yang ada, kembali membuat itu. Untuk informasi selengkapnya, lihat Buat tabel untuk CloudTrail log di Athena menggunakan partisi manual.
Verifikasi bahwa bidang dalam permintaan Athena Anda terdaftar dengan benar. Untuk informasi tentang daftar lengkap bidang dalam CloudTrail catatan, lihat konten CloudTrail rekaman.
Jika kueri Anda menyertakan bidang dalam JSON format, seperti
STRUCT
, ekstrak data dariJSON. Untuk informasi selengkapnya, lihat Ekstrak JSON data dari string.Beberapa saran untuk mengeluarkan kueri terhadap tabel Anda CloudTrail :
-
Mulailah dengan melihat pengguna mana yang memanggil API operasi mana dan dari alamat IP sumber mana.
-
Gunakan SQL kueri dasar berikut sebagai template Anda. Tempelkan kueri ke konsol Athena dan jalankannya.
SELECT useridentity.arn, eventname, sourceipaddress, eventtime FROM cloudtrail_logs LIMIT 100;
-
Ubah kueri untuk mengeksplorasi data Anda lebih lanjut.
-
Untuk meningkatkan performa, sertakan
LIMIT
klausa untuk mengembalikan subset tertentu dari baris.