İçeriğe geç
Cloud Provider Benchmarks

Bulut güvenliği ve denetim

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

  1. 01 CADF (Cloud Auditing Data Federation), her olayı initiator, action, target, observer ve outcome olarak yapılandıran bir DMTF standardıdır.
  2. 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.
  3. 03 İletim oslo.messaging bildirimleriyle yapılır; depolama, saklama ve erişime operatör karar verir — yönetilen denetim servislerinden temel fark budur.
  4. 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:

  1. auth_token tarafından ayarlanan token bağlamını (kullanıcı, proje, roller) okur.
  2. HTTP metodunu ve yolu, o servisin audit map dosyasını kullanarak bir CADF eylemine ve hedefine eşler.
  3. İstek geldiğinde bir CADF olayı, yanıt döndüğünde sonucu içeren bir olay daha üretir.
  4. 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.

Kavramsal bulut denetim olayı veri modeli Araştırma dokümantasyonu içindir; üretim denetim kayıtlarını temsil etmez.
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 —
Boş şablon (JSON)
{
  "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. [1] keystonemiddleware — Audit middleware — OpenStack Resmî dokümantasyon erişim:
  2. [2] pyCADF documentation — OpenStack Resmî dokümantasyon erişim:
  3. [3] DMTF Cloud Auditing Data Federation (CADF) — DMTF Resmî dokümantasyon erişim:
  4. [4] Keystone event notifications — OpenStack Resmî dokümantasyon erişim:
  5. [5] PortvMind Cloud — PortvMind Sağlayıcı ekibince sağlandı erişim: