Daha önce DynamoDB tabanlı olarak planlanan audit log sistemi, AWS servislerini kullanan stream tabanlı bir mimari olarak yeniden tasarlanmıştır. Bu tasarım daha iyi ölçeklenebilirlik, gerçek zamanlı işleme ve audit logların uzun süreli depolanmasını sağlar.
Powered by Sinan ARTUN
Her API isteği/yanıtı için audit log üretir
İstek/yanıt verilerini yakalamak için HTTP filter implementasyonu
HttpServletRequest içinde requestedAt
ve auditLogId
değerlerinin set edilmesi
Log kaydı öncesi hassas verilerin maskelenmesi
İstek ve yanıtların Kinesis'e gönderilmesi
Birincil veri streaming servisi olarak görev yapar
Birden fazla uygulama instance'ından gelen verilerin gerçek zamanlı alımını sağlar
Audit loglar için geçici depolama ve sıralı teslimat sağlar
Trafik hacmine göre uygun sharding yapılandırması
Kinesis'ten S3'e veri aktarımını yönetir
Gerektiğinde veri dönüşüm yetenekleri sunar
Veri sıkıştırma ve batch işleme yapılandırması
Yedek hedef depolama desteği
Audit logların uzun süreli depolanması
Verilerin partition'lanması ve yaşam döngüsü yönetimi
Maliyet optimizasyonu için sınıf tabanlı depolama (S3 Standard, S3 IA, Glacier)
Veri yedekliliği ve güvenlik
S3'te depolanan loglar üzerinde SQL sorguları çalıştırma
Ad-hoc analizler ve raporlama
Performans analizi ve sorun giderme
Uyumluluk denetimi ve güvenlik analizi
Back-end uygulaması her istek için bir audit log kaydı oluşturur
HTTP filter ile istek ve yanıt bilgileri yakalanır
Hassas veriler maskelenir
Log kaydı Kinesis stream'e gönderilir
Kinesis Data Firehose verileri toplu olarak S3'e aktarır
Athena ile S3'teki veriler sorgulanabilir
Kinesis shard sayısı trafik hacmine göre ayarlanmalı
Firehose buffer ayarları optimize edilmeli
S3 partition stratejisi belirlenmeli
Athena sorgu performansı için partitioning ve indexing kullanılmalı
Tüm AWS servisler arası iletişim şifrelenmiş olmalı
IAM rolleri en az yetki prensibiyle yapılandırılmalı
S3 bucket encryption aktif olmalı
Hassas veri maskeleme kuralları belirlenmeli
S3 yaşam döngüsü kuralları tanımlanmalı
Kinesis kapasitesi optimize edilmeli
Athena sorgu maliyetleri izlenmeli
Gereksiz veri tekrarından kaçınılmalı
CloudWatch metrikleri takip edilmeli
Kinesis ve Firehose hata durumları izlenmeli
S3 depolama kullanımı takip edilmeli
Athena sorgu performansı izlenmeli
Bölgesel yedeklilik planı
Veri kurtarma prosedürleri
Yedekleme stratejisi
Failover senaryoları
Log retention politikaları
Arşivleme stratejisi
Performans optimizasyonu
Kapasite planlama
IP Address : İstek atan ip adresi
192.168.0.1
User ID : Kullanıcıya ait ID bilgisi
1c911d7d-dd0c-4b11-a067-d49c963e3a5e
Referer: isteğin geldiği web sitesi adresi
https://example-ui.com
Http Method : Http method’u tutacak alandır
GET | POST | PUT | PATCH | DELETE
Path : Path’i tutacak alandır
/user/login
Request Header : İstekle ilgili başlık bilgilerini tutan bir alandır
{ "host": "localhost:8080", "user-agent": "PostmanRuntime/7.26.10", "accept": "/", "cache-control": "no-cache", "postman-token": "1234abcd", "accept-encoding": "gzip, deflate, br", "connection": "keep-alive" } |
Request Body : İstekle ilgili başlık bilgilerini tutan bir alandır
{ "name": "John", "age": 30, "email": "john@example.com" } |
Response Code : Her isteğin döndürdüğü unique code
123e4567-e89b-12d3-a456-426614174000
Response Status Code : HTTP durum kodu
200, 500
Response Body : API'nin döndüğü yanıt eğer varsa
{ "time": "2024-07-01T21:21:21.879518571", "code": "123e4567-e89b-12d3-a456-426614174000", "isSuccess": true, "response": { "createdUser": "agitrubard", "createdAt": "2024-06-24T13:32:49", "updatedUser": "AYS", "updatedAt": "2024-07-01T21:20:41", "id": "4eb44207-b6a8-4d9c-82c2-292840e4f897", "reason": "Mo Alam için oluşturuldu.", "rejectReason": null, "status": "COMPLETED", "institution": { "id": "d95b59c7-9ac1-4be3-a981-33af1d3f8386", "name": "Disaster Foundation" }, "user": { "id": "828198fd-70b7-4037-9ece-b94274e72524", "firstName": "Buğra", "lastName": "Ercan", "city": "İstanbul", "emailAddress": "bugra.ercan@afetyonetimsistemi.org", "phoneNumber": { "countryCode": "90", "lineNumber": "5051237891" } } } } |
Requested At: istek tarihi
2024-10-06T12:30:45
Responded At : istek cevap tarihi
2024-10-06T12:30:45
Buradan ilgili veri modeli analizine gidebilirsiniz. |
Audit loglarında yer alacak bilgiler arasında bulunan telefon numarası, isim-soy isim, açık adres gibi kişisel ve hassas bilgiler kesinlikle maskeleme veya anonimleştirme işlemine tabi tutulmalıdır. Örneğin, telefon numarası +90 532 123 45 67 yerine +90 532 *** ** ** formatında, isim Ahmet Yılmaz yerine A*** Y**** şeklinde, açık adres ise 1234 Cadde No:56 İstanbul yerine 1234 C*** No:** I******* olarak kayıt edilmelidir. Bu işlemler, veri güvenliği ve yasal mevzuata uygunluğu sağlamak adına zorunludur. |
password
1234567890123456
→ ******
emailAddress
j@g
→ j@g
james.william@afetyonetimsistemi.org
→ jam******org
lineNumber
1234
→ 1234
5012345678
→ ******5678
firstName
, lastName
, applicantFirstName
, applicantLastName
Do → D******
Joe → J******
James → J******
Diana → D******
address
Springfield Street
→ Spr******eet
123 Main Street, Springfield
→ 123 M******field
Authorization
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp.eyJq
→ Bearer eyJhbGciOiJIUzI1NiIs******
accessToken
, refreshToken
eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp.eyJq
→ eyJhbGciOiJIUzI1NiIs******