OpenStack denetim kaydı: CADF, keystonemiddleware ve denetim izi oluşturmak
OpenStack'te denetim kaydı nasıl çalışır: CADF olay biçimi, keystonemiddleware audit filtresi, Keystone bildirimleri ve bir OpenStack bulutunun olayları sunma biçimi.
Yayımlandı: Güncellendi: Read in English
Kısa yanıt
OpenStack'te denetim olaylarını her API servisindeki keystonemiddleware audit filtresi ve Keystone'un CADF bildirimleri üretir. Olaylar bildirim (veya log) olarak yayılır ve operatör tarafından toplanmalı, saklanmalı ve indekslenmelidir; varsayılan bir saklama süresi veya arama arayüzü yoktur.
Yönetici özeti
OpenStack'te CloudTrail ile karşılaştırılabilecek tek bir yerleşik denetim servisi yoktur. Bunun yerine keystonemiddleware audit filtresi her servisin API hattına eklenerek her istek için DMTF CADF olayları üretebilir; Keystone da kimlik işlemleri için CADF bildirimleri yayar. Operatörler bu olayları oslo.messaging üzerinden depolama ve arama sistemlerine yönlendirir. Kamuya açık OpenStack bulutları bunu genellikle yönetilen bir denetim servisine dönüştürür; PortvMind'ın vTrail servisi, OpenStack tabanlı bir bulutta sağlayıcı tarafından işletilen denetim kaydına bir örnektir.
Temel bulgular
- 01 CADF (Cloud Auditing Data Federation), her olayı initiator, action, target, observer ve outcome olarak yapılandıran bir DMTF standardıdır.
- 02 keystonemiddleware audit filtresi, servis başına audit map dosyalarıyla API yollarını CADF eylemlerine eşler ve Keystone token'ından kimliği doğrulanmış kullanıcı, proje ve rolleri ekler.
- 03 İletim oslo.messaging bildirimleriyle yapılır; depolama, saklama ve erişime operatör karar verir — yönetilen denetim servislerinden temel fark budur.
- 04 OpenStack bulutlarında sağlayıcı tarafından işletilen denetim servisleri eksik parçaları ekler: depolama, saklama, arama ve tenant kapsamlı erişim.
CADF olay modeli
CADF, denetlenebilir her eylemi küçük ve sabit bir sözlükle tanımlar:
| CADF öğesi | Anlamı | Örnek |
|---|---|---|
| initiator | Eylemi kim yaptı | kullanıcı kimliği, ad, proje, host adresi, agent |
| action | Ne denendi | create, update, delete, read/list |
| target | Ne üzerinde | tür URI’si ve kimliğiyle bir sunucu, volume veya ağ |
| observer | Kim kaydetti | olayı yayan API servisi |
| outcome | Sonuç | success, failure, pending |
| eventTime | Ne zaman | RFC 3339 zaman damgası |
keystonemiddleware audit filtresi
Audit middleware, bir API servisinin WSGI hattında kimlik doğrulama filtresinin yanında yer alır. Her istek için:
auth_tokentarafından ayarlanan token bağlamını (kullanıcı, proje, roller) okur.- HTTP metodunu ve yolu, o servisin audit map dosyasını kullanarak bir CADF eylemine ve hedefine eşler.
- İstek geldiğinde bir CADF olayı, yanıt döndüğünde sonucu içeren bir olay daha üretir.
- Olayı oslo.messaging üzerinden bildirim olarak gönderir veya bir log’a yazar.
Her servisin içinde çalıştığı için kapsam, operatörün filtreyi her yerde etkinleştirmesine bağlıdır.
Keystone bildirimleri
Keystone, CADF bildirim biçimiyle yapılandırıldığında kimlik doğrulama, kullanıcı ve proje değişiklikleri ve rol atamaları gibi kimlik işlemleri için CADF biçimli bildirimler yayar. Bunlar servis bazlı API olaylarını tamamlar.
Operatörün eklemesi gerekenler
Middleware olay üretir; olayları saklamaz veya sunmaz. Bir denetim izi için şunlar gerekir:
- mesaj kuyruğundan bildirimleri tüketen bir toplayıcı;
- tanımlı saklama süresi ve yazma korumasıyla depolama;
- kullanıcı, proje, kaynak ve zamana göre indeksleme ve arama;
- her müşterinin yalnızca kendi olaylarını gördüğü tenant yalıtımı;
- müşteriye ait sistemlere aktarım.
Kamuya açık OpenStack bulutlarında sağlayıcı tarafından işletilen servisler bu boşluğu kapatır.
Örnek olarak vTrail
vTrail, PortvMind Cloud’un denetim kaydı servisidir. Sağlayıcı tarafından sağlanan olay modeli zamanı, istek kimliğini, HTTP metodunu ve yolu, durumu, istemci IP’sini, user agent’ı, kimliği doğrulanmış kullanıcıyı, projeyi ve kapsamı, servis ve rotayı ve istek süresini kaydeder. Aşağıdaki eşleme bu alanların CADF, CloudTrail ve Google Cloud denetim alanlarıyla nasıl karşılaştığını gösterir.
| Alan | Tip | Açıklama | AWS CloudTrail | Google Cloud Audit Logs | OpenStack CADF |
|---|---|---|---|---|---|
| event_time | string (RFC 3339) | İşlemin alındığı zaman (UTC). | eventTime | timestamp | eventTime |
| request_id | string | Gateway, servis ve kaynak loglarını ilişkilendirmek için benzersiz istek kimliği. | requestID | insertId / operation.id | id / requestId (attachment) |
| http_method | string | API çağrısının HTTP fiili (GET, POST, PUT, PATCH, DELETE). | — | httpRequest.requestMethod | action (mapped) |
| full_path | string | Hedef kaynağı belirten istenen API yolu. | eventSource + eventName | protoPayload.methodName / resourceName | target.id / requestPath |
| http_status | integer | Yanıt durum kodu — işlemin sonucu. | errorCode (on failure) | protoPayload.status.code | outcome / reason.reasonCode |
| client_ip | string (IP) | Çağıranın kaynak IP adresi. | sourceIPAddress | protoPayload.requestMetadata.callerIp | initiator.host.address |
| user_agent | string | İstemci yazılımı (konsol, CLI, SDK, Terraform). | userAgent | protoPayload.requestMetadata.callerSuppliedUserAgent | initiator.host.agent |
| auth_user_id | string | Kimliği doğrulanmış kullanıcının kalıcı kimliği. | userIdentity.principalId | protoPayload.authenticationInfo.principalSubject | initiator.id |
| auth_user_name | string | İstek anındaki okunabilir kullanıcı adı. | userIdentity.userName / arn | protoPayload.authenticationInfo.principalEmail | initiator.name |
| auth_project_id | string | Token kapsamındaki proje (kiracı). | recipientAccountId | resource.labels.project_id | initiator.project_id |
| auth_scope | string | Token’ın yetki kapsamı veya rol bağlamı. | userIdentity.sessionContext | protoPayload.authorizationInfo | initiator.credential |
| service_id | string | İsteği işleyen arka uç bulut servisi (compute, ağ, depolama). | eventSource | protoPayload.serviceName | observer.id / target.typeURI |
| route_id | string | İstekle eşleşen API gateway rotası. | — | — | — |
| request_time | number (ms) | Uçtan uca istek işleme süresi. | — | httpRequest.latency | — |
{
"event_time": "",
"request_id": "",
"http_method": "",
"full_path": "",
"http_status": null,
"client_ip": "",
"user_agent": "",
"auth_user_id": "",
"auth_user_name": "",
"auth_project_id": "",
"auth_scope": "",
"service_id": "",
"route_id": "",
"request_time": null
} vTrail’in saklama, aktarım, arama ve bütünlük özellikleri henüz kamuya açık olarak belgelenmemiştir ve bulut denetim kaydı karşılaştırmasında doğrulanmadı olarak işaretlenmiştir.
Sınırlamalar
- OpenStack kurulumları büyük farklılık gösterir; hangi servislerin denetim olayı yaydığı yapılandırmaya bağlıdır.
- Tablodaki CADF alan eşlemeleri kavramsal karşılıklardır, birebir anlamsal eşleşme değildir.
- vTrail bilgisi sağlayıcı tarafından sağlanmıştır.
Sonuç
OpenStack, operatörlere denetim olayı üretmenin standartlara dayalı bir yolunu sunar; ancak hazır bir denetim izi sunmaz. OpenStack tabanlı bir sağlayıcıyı değerlendirirken CADF etrafında ne kurduğunu sorun: kapsam, saklama, arama, tenant yalıtımı ve aktarım.
Sık sorulan sorular
OpenStack'te CloudTrail karşılığı var mı?
Tek bir servis olarak yok. OpenStack yapı taşlarını — audit middleware ve CADF bildirimlerini — sağlar; operatörler toplama, depolama ve aramayı bunların etrafında kurar.
CADF nedir?
Cloud Auditing Data Federation; denetim kayıtları için DMTF standardı bir olay modelidir. OpenStack bunu pyCADF kütüphanesi aracılığıyla kullanır.
Hangi OpenStack servisleri denetlenebilir?
Paste hattında audit filtresi bulunan ve bir audit map dosyası olan her WSGI API servisi; örneğin Compute, Networking, Block Storage ve Image.
Kaynaklar
- [1] keystonemiddleware — Audit middleware — OpenStack Resmî dokümantasyon erişim:
- [2] pyCADF documentation — OpenStack Resmî dokümantasyon erişim:
- [3] DMTF Cloud Auditing Data Federation (CADF) — DMTF Resmî dokümantasyon erişim:
- [4] Keystone event notifications — OpenStack Resmî dokümantasyon erişim:
- [5] PortvMind Cloud — PortvMind Sağlayıcı ekibince sağlandı erişim:
İlgili araştırmalar
Bulut güvenliği ve denetim
AWS CloudTrail alternatifleri: diğer bulutlarda ve OpenStack'te denetim kaydı
Google Cloud, Azure, OpenStack tabanlı bulutlar ve küçük sağlayıcılardaki CloudTrail karşılıkları; kapsam, kimlik, saklama, aktarım ve bütünlük açısından.
Bulut güvenliği ve denetim
Bulut denetim kaydı karşılaştırması: CloudTrail, vTrail, Google Cloud Audit Logs ve Azure Activity Log
Bulut sağlayıcıları kimin neyi ne zaman yaptığını nasıl kaydeder: dört denetim kaydı servisinde kapsam, kimlik, istek meta verisi, saklama, aktarım ve bütünlük.
Bulut güvenliği ve denetim
Bulut aktivite izleme: denetim kayıtları, alarmlar ve metrikler nasıl bir araya gelir
Bulut denetim kaydı, aktivite izleme ve performans izleme arasındaki fark ve sağlayıcılar genelinde denetim olayları üzerine alarm kurmanın yolu.
Bulut güvenliği ve denetim
Bulut denetim izi en iyi uygulamaları: kapsam, saklama, bütünlük ve inceleme
Bulut denetim izleri için pratik kontrol listesi: neyin kaydedileceği, ne kadar saklanacağı, değiştirilmeye karşı nasıl korunacağı ve nasıl inceleneceği.