<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-28 --> <p>Audit logging in Geode provides comprehensive tracking of all database operations, creating an immutable record of who accessed what data, when they accessed it, and what changes were made. This capability is essential for security monitoring, regulatory compliance, forensic analysis, incident response, and operational troubleshooting.</p> <h3 id="audit-logging-overview" class="position-relative d-flex align-items-center group"> <span>Audit Logging Overview</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="audit-logging-overview" aria-haspopup="dialog" aria-label="Share link: Audit Logging Overview"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Geode&rsquo;s audit system captures detailed information about every database interaction:</p> <ul> <li><strong>Authentication Events</strong>: Login attempts, failures, session management</li> <li><strong>Authorization Events</strong>: Permission checks, access grants and denials</li> <li><strong>Data Access</strong>: All read operations with query details and result metadata</li> <li><strong>Data Modifications</strong>: CREATE, UPDATE, DELETE operations with before/after values</li> <li><strong>Schema Changes</strong>: Graph definitions, constraints, indexes, policies</li> <li><strong>Administrative Actions</strong>: User management, configuration changes, maintenance</li> <li><strong>System Events</strong>: Startup, shutdown, errors, resource exhaustion</li> </ul> <h4 id="audit-event-structure" class="position-relative d-flex align-items-center group"> <span>Audit Event Structure</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="audit-event-structure" aria-haspopup="dialog" aria-label="Share link: Audit Event Structure"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Every audit event contains:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;event_id&#34;</span><span class="p">:</span> <span class="s2">&#34;evt_2026012810152345678&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;timestamp&#34;</span><span class="p">:</span> <span class="s2">&#34;2026-01-28T10:15:23.456789Z&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;event_type&#34;</span><span class="p">:</span> <span class="s2">&#34;data_access&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;severity&#34;</span><span class="p">:</span> <span class="s2">&#34;info&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;actor&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;user_id&#34;</span><span class="p">:</span> <span class="s2">&#34;[email protected]&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;session_id&#34;</span><span class="p">:</span> <span class="s2">&#34;sess_abc123def456&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;roles&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;analyst&#34;</span><span class="p">,</span> <span class="s2">&#34;viewer&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;ip_address&#34;</span><span class="p">:</span> <span class="s2">&#34;192.168.1.100&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;user_agent&#34;</span><span class="p">:</span> <span class="s2">&#34;geode-client-python/0.3.19&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;operation&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;SELECT&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;MATCH (c:Customer) WHERE c.region = $region RETURN c.name, c.email&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;parameters&#34;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&#34;region&#34;</span><span class="p">:</span> <span class="s2">&#34;EMEA&#34;</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;graph&#34;</span><span class="p">:</span> <span class="s2">&#34;production&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;duration_ms&#34;</span><span class="p">:</span> <span class="mi">45</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rows_returned&#34;</span><span class="p">:</span> <span class="mi">127</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;bytes_transferred&#34;</span><span class="p">:</span> <span class="mi">8192</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;result&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;success&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;error_code&#34;</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;error_message&#34;</span><span class="p">:</span> <span class="kc">null</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;context&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;transaction_id&#34;</span><span class="p">:</span> <span class="s2">&#34;txn_xyz789&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;request_id&#34;</span><span class="p">:</span> <span class="s2">&#34;req_abc123&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;correlation_id&#34;</span><span class="p">:</span> <span class="s2">&#34;corr_456def&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h3 id="enabling-audit-logging" class="position-relative d-flex align-items-center group"> <span>Enabling Audit Logging</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="enabling-audit-logging" aria-haspopup="dialog" aria-label="Share link: Enabling Audit Logging"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="command-line-configuration" class="position-relative d-flex align-items-center group"> <span>Command Line Configuration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="command-line-configuration" aria-haspopup="dialog" aria-label="Share link: Command Line Configuration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Enable comprehensive audit logging</span> </span></span><span class="line"><span class="cl">geode serve --audit-enabled<span class="o">=</span><span class="nb">true</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-log-level<span class="o">=</span>comprehensive <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-log-file<span class="o">=</span>/var/log/geode/audit.log <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-log-format<span class="o">=</span>json </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Enable specific event types only</span> </span></span><span class="line"><span class="cl">geode serve --audit-enabled<span class="o">=</span><span class="nb">true</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-events<span class="o">=</span>authentication,authorization,data_modification,admin </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Configure log rotation</span> </span></span><span class="line"><span class="cl">geode serve --audit-log-max-size<span class="o">=</span>100MB <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-log-max-files<span class="o">=</span><span class="m">30</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-log-compress<span class="o">=</span><span class="nb">true</span> </span></span></code></pre></div> <h4 id="configuration-file" class="position-relative d-flex align-items-center group"> <span>Configuration File</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="configuration-file" aria-haspopup="dialog" aria-label="Share link: Configuration File"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">level</span><span class="p">:</span><span class="w"> </span><span class="l">comprehensive </span><span class="w"> </span><span class="c"># minimal, security, compliance, comprehensive</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Event types to log</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">events</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">authentication</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">authorization</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">data_access</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">data_modification</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">schema_changes</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">admin_actions</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">system_events</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Output configuration</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">output</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">file</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/var/log/geode/audit.log</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">format</span><span class="p">:</span><span class="w"> </span><span class="l">json </span><span class="w"> </span><span class="c"># json, syslog, cef</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">rotation</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">max_size</span><span class="p">:</span><span class="w"> </span><span class="l">100MB</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">max_files</span><span class="p">:</span><span class="w"> </span><span class="m">30</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">compress</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Optional: Stream to external system</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">stream</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">endpoint</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;https://siem.example.com/collect&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">batch_size</span><span class="p">:</span><span class="w"> </span><span class="m">100</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">flush_interval</span><span class="p">:</span><span class="w"> </span><span class="l">5s</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Data handling</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">include_query_parameters</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">include_result_data</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="c"># Avoid logging sensitive data</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">include_before_after</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c"># For modifications</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">mask_sensitive_fields</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">password</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">ssn</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">credit_card</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Retention</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">retention_days</span><span class="p">:</span><span class="w"> </span><span class="m">2555</span><span class="w"> </span><span class="c"># 7 years for compliance</span><span class="w"> </span></span></span></code></pre></div> <h3 id="audit-log-levels" class="position-relative d-flex align-items-center group"> <span>Audit Log Levels</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="audit-log-levels" aria-haspopup="dialog" aria-label="Share link: Audit Log Levels"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="minimal-level" class="position-relative d-flex align-items-center group"> <span>Minimal Level</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="minimal-level" aria-haspopup="dialog" aria-label="Share link: Minimal Level"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Logs only critical security events:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">level</span><span class="p">:</span><span class="w"> </span><span class="l">minimal</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Logs:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Authentication failures</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Authorization denials</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Administrative actions</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - System errors</span><span class="w"> </span></span></span></code></pre></div> <h4 id="security-level" class="position-relative d-flex align-items-center group"> <span>Security Level</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="security-level" aria-haspopup="dialog" aria-label="Share link: Security Level"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Logs all security-relevant events:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">level</span><span class="p">:</span><span class="w"> </span><span class="l">security</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Logs:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - All authentication events</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - All authorization events</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Permission changes</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - User management</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Configuration changes</span><span class="w"> </span></span></span></code></pre></div> <h4 id="compliance-level" class="position-relative d-flex align-items-center group"> <span>Compliance Level</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="compliance-level" aria-haspopup="dialog" aria-label="Share link: Compliance Level"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Logs events required for regulatory compliance:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">level</span><span class="p">:</span><span class="w"> </span><span class="l">compliance</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Logs:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - All data access (who accessed what)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - All data modifications (what changed)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Exports and data transfers</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Schema changes</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Plus all security events</span><span class="w"> </span></span></span></code></pre></div> <h4 id="comprehensive-level" class="position-relative d-flex align-items-center group"> <span>Comprehensive Level</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="comprehensive-level" aria-haspopup="dialog" aria-label="Share link: Comprehensive Level"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Logs everything:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">level</span><span class="p">:</span><span class="w"> </span><span class="l">comprehensive</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Logs:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Every query executed</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Every connection made</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - All internal operations</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Performance metrics</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - Plus all compliance events</span><span class="w"> </span></span></span></code></pre></div> <h3 id="event-types" class="position-relative d-flex align-items-center group"> <span>Event Types</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="event-types" aria-haspopup="dialog" aria-label="Share link: Event Types"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="authentication-events" class="position-relative d-flex align-items-center group"> <span>Authentication Events</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="authentication-events" aria-haspopup="dialog" aria-label="Share link: Authentication Events"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;event_type&#34;</span><span class="p">:</span> <span class="s2">&#34;authentication&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;subtype&#34;</span><span class="p">:</span> <span class="s2">&#34;login_success&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;actor&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;user_id&#34;</span><span class="p">:</span> <span class="s2">&#34;[email protected]&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;ip_address&#34;</span><span class="p">:</span> <span class="s2">&#34;192.168.1.100&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;auth_method&#34;</span><span class="p">:</span> <span class="s2">&#34;password&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;details&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;mfa_used&#34;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;mfa_method&#34;</span><span class="p">:</span> <span class="s2">&#34;totp&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;session_duration&#34;</span><span class="p">:</span> <span class="mi">3600</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p>Authentication subtypes:</p> <ul> <li><code>login_success</code> - Successful login</li> <li><code>login_failure</code> - Failed login attempt</li> <li><code>logout</code> - User logout</li> <li><code>session_expired</code> - Session timeout</li> <li><code>mfa_challenge</code> - MFA initiated</li> <li><code>mfa_success</code> - MFA passed</li> <li><code>mfa_failure</code> - MFA failed</li> <li><code>token_issued</code> - API token created</li> <li><code>token_revoked</code> - API token revoked</li> </ul> <h4 id="authorization-events" class="position-relative d-flex align-items-center group"> <span>Authorization Events</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="authorization-events" aria-haspopup="dialog" aria-label="Share link: Authorization Events"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;event_type&#34;</span><span class="p">:</span> <span class="s2">&#34;authorization&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;subtype&#34;</span><span class="p">:</span> <span class="s2">&#34;access_denied&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;actor&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;user_id&#34;</span><span class="p">:</span> <span class="s2">&#34;[email protected]&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;roles&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;viewer&#34;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;details&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;resource&#34;</span><span class="p">:</span> <span class="s2">&#34;:SensitiveData&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;operation&#34;</span><span class="p">:</span> <span class="s2">&#34;SELECT&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;required_permission&#34;</span><span class="p">:</span> <span class="s2">&#34;read:sensitive&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;actual_permissions&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;read:public&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;policy_applied&#34;</span><span class="p">:</span> <span class="s2">&#34;sensitive_data_policy&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p>Authorization subtypes:</p> <ul> <li><code>access_granted</code> - Permission check passed</li> <li><code>access_denied</code> - Permission check failed</li> <li><code>permission_granted</code> - New permission added</li> <li><code>permission_revoked</code> - Permission removed</li> <li><code>role_assigned</code> - Role given to user</li> <li><code>role_removed</code> - Role taken from user</li> <li><code>rls_applied</code> - Row-level security filtered results</li> </ul> <h4 id="data-access-events" class="position-relative d-flex align-items-center group"> <span>Data Access Events</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="data-access-events" aria-haspopup="dialog" aria-label="Share link: Data Access Events"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;event_type&#34;</span><span class="p">:</span> <span class="s2">&#34;data_access&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;subtype&#34;</span><span class="p">:</span> <span class="s2">&#34;query_executed&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;actor&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;user_id&#34;</span><span class="p">:</span> <span class="s2">&#34;[email protected]&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;operation&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;SELECT&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;MATCH (c:Customer) WHERE c.vip = true RETURN c&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;graph&#34;</span><span class="p">:</span> <span class="s2">&#34;production&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;labels_accessed&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;Customer&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;properties_accessed&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;name&#34;</span><span class="p">,</span> <span class="s2">&#34;email&#34;</span><span class="p">,</span> <span class="s2">&#34;vip&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rows_returned&#34;</span><span class="p">:</span> <span class="mi">45</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;duration_ms&#34;</span><span class="p">:</span> <span class="mi">23</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p>Data access subtypes:</p> <ul> <li><code>query_executed</code> - Read query completed</li> <li><code>data_exported</code> - Bulk data export</li> <li><code>report_generated</code> - Report creation</li> <li><code>aggregation_computed</code> - Aggregate query</li> </ul> <h4 id="data-modification-events" class="position-relative d-flex align-items-center group"> <span>Data Modification Events</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="data-modification-events" aria-haspopup="dialog" aria-label="Share link: Data Modification Events"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;event_type&#34;</span><span class="p">:</span> <span class="s2">&#34;data_modification&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;subtype&#34;</span><span class="p">:</span> <span class="s2">&#34;node_updated&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;actor&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;user_id&#34;</span><span class="p">:</span> <span class="s2">&#34;[email protected]&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;operation&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;UPDATE&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;graph&#34;</span><span class="p">:</span> <span class="s2">&#34;production&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;target&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;label&#34;</span><span class="p">:</span> <span class="s2">&#34;Customer&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;id&#34;</span><span class="p">:</span> <span class="s2">&#34;cust_12345&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;changes&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;before&#34;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;active&#34;</span><span class="p">,</span> <span class="nt">&#34;tier&#34;</span><span class="p">:</span> <span class="s2">&#34;gold&#34;</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;after&#34;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;active&#34;</span><span class="p">,</span> <span class="nt">&#34;tier&#34;</span><span class="p">:</span> <span class="s2">&#34;platinum&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p>Modification subtypes:</p> <ul> <li><code>node_created</code> - New node inserted</li> <li><code>node_updated</code> - Node properties changed</li> <li><code>node_deleted</code> - Node removed</li> <li><code>relationship_created</code> - New relationship</li> <li><code>relationship_updated</code> - Relationship changed</li> <li><code>relationship_deleted</code> - Relationship removed</li> <li><code>bulk_insert</code> - Batch data import</li> <li><code>bulk_delete</code> - Batch data removal</li> </ul> <h4 id="schema-change-events" class="position-relative d-flex align-items-center group"> <span>Schema Change Events</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="schema-change-events" aria-haspopup="dialog" aria-label="Share link: Schema Change Events"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;event_type&#34;</span><span class="p">:</span> <span class="s2">&#34;schema_change&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;subtype&#34;</span><span class="p">:</span> <span class="s2">&#34;constraint_created&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;actor&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;user_id&#34;</span><span class="p">:</span> <span class="s2">&#34;[email protected]&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;details&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;object_type&#34;</span><span class="p">:</span> <span class="s2">&#34;constraint&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;object_name&#34;</span><span class="p">:</span> <span class="s2">&#34;unique_customer_email&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;definition&#34;</span><span class="p">:</span> <span class="s2">&#34;CONSTRAINT unique_customer_email ON :Customer ASSERT email IS UNIQUE&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p>Schema subtypes:</p> <ul> <li><code>graph_created</code> - New graph</li> <li><code>graph_dropped</code> - Graph deleted</li> <li><code>constraint_created</code> - New constraint</li> <li><code>constraint_dropped</code> - Constraint removed</li> <li><code>index_created</code> - New index</li> <li><code>index_dropped</code> - Index removed</li> <li><code>policy_created</code> - RLS policy added</li> <li><code>policy_modified</code> - RLS policy changed</li> <li><code>policy_dropped</code> - RLS policy removed</li> </ul> <h4 id="administrative-events" class="position-relative d-flex align-items-center group"> <span>Administrative Events</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="administrative-events" aria-haspopup="dialog" aria-label="Share link: Administrative Events"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;event_type&#34;</span><span class="p">:</span> <span class="s2">&#34;admin_action&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;subtype&#34;</span><span class="p">:</span> <span class="s2">&#34;user_created&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;actor&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;user_id&#34;</span><span class="p">:</span> <span class="s2">&#34;[email protected]&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;details&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;target_user&#34;</span><span class="p">:</span> <span class="s2">&#34;[email protected]&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;roles_assigned&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;analyst&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;password_policy&#34;</span><span class="p">:</span> <span class="s2">&#34;standard&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p>Administrative subtypes:</p> <ul> <li><code>user_created</code> - New user account</li> <li><code>user_modified</code> - User properties changed</li> <li><code>user_deleted</code> - User account removed</li> <li><code>user_disabled</code> - Account disabled</li> <li><code>user_enabled</code> - Account enabled</li> <li><code>password_changed</code> - Password updated</li> <li><code>config_changed</code> - Server configuration modified</li> <li><code>backup_created</code> - Backup initiated</li> <li><code>backup_restored</code> - Restore completed</li> <li><code>maintenance_started</code> - Maintenance window began</li> </ul> <h3 id="querying-audit-logs" class="position-relative d-flex align-items-center group"> <span>Querying Audit Logs</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="querying-audit-logs" aria-haspopup="dialog" aria-label="Share link: Querying Audit Logs"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="built-in-audit-queries" class="position-relative d-flex align-items-center group"> <span>Built-in Audit Queries</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="built-in-audit-queries" aria-haspopup="dialog" aria-label="Share link: Built-in Audit Queries"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Recent</span><span class="w"> </span><span class="py">authentication</span><span class="w"> </span><span class="py">failures</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="err">*</span><span class="w"> </span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">audit_log</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">event_type</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">authentication</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">subtype</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">login_failure</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">timestamp</span><span class="w"> </span><span class="err">&gt;</span><span class="w"> </span><span class="py">current_timestamp</span><span class="p">()</span><span class="w"> </span><span class="err">-</span><span class="w"> </span><span class="py">INTERVAL</span><span class="w"> </span><span class="err">&#39;</span><span class="py">24</span><span class="w"> </span><span class="py">hours</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">timestamp</span><span class="w"> </span><span class="py">DESC</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Data</span><span class="w"> </span><span class="py">access</span><span class="w"> </span><span class="py">by</span><span class="w"> </span><span class="py">specific</span><span class="w"> </span><span class="py">user</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="py">timestamp</span><span class="p">,</span><span class="w"> </span><span class="py">operation</span><span class="err">.</span><span class="kd">query</span><span class="p">,</span><span class="w"> </span><span class="nc">operation</span><span class="err">.</span><span class="py">rows_returned</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">audit_log</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">actor</span><span class="err">.</span><span class="py">user_id</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">analyst</span><span class="nd">@example</span><span class="err">.</span><span class="py">com</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">event_type</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">data_access</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">timestamp</span><span class="w"> </span><span class="py">BETWEEN</span><span class="w"> </span><span class="nv">$start_date</span><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="nv">$end_date</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Modifications</span><span class="w"> </span><span class="py">to</span><span class="w"> </span><span class="py">sensitive</span><span class="w"> </span><span class="py">labels</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="err">*</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">audit_log</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">event_type</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">data_modification</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">operation</span><span class="err">.</span><span class="py">target</span><span class="err">.</span><span class="py">label</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">(</span><span class="err">&#39;</span><span class="py">Customer</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Payment</span><span class="err">&#39;</span><span class="p">,</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Account</span><span class="err">&#39;</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">timestamp</span><span class="w"> </span><span class="py">DESC</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">100</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="err">--</span><span class="w"> </span><span class="py">Permission</span><span class="w"> </span><span class="py">escalation</span><span class="w"> </span><span class="py">attempts</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w"> </span><span class="err">*</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">audit_log</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">event_type</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">authorization</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">subtype</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">access_denied</span><span class="err">&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">AND</span><span class="w"> </span><span class="py">details</span><span class="err">.</span><span class="py">required_permission</span><span class="w"> </span><span class="py">LIKE</span><span class="w"> </span><span class="err">&#39;%</span><span class="py">admin</span><span class="err">%&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">timestamp</span><span class="w"> </span><span class="py">DESC</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="command-line-queries" class="position-relative d-flex align-items-center group"> <span>Command Line Queries</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="command-line-queries" aria-haspopup="dialog" aria-label="Share link: Command Line Queries"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Search recent audit logs</span> </span></span><span class="line"><span class="cl">geode audit search --since<span class="o">=</span>1h --event-type<span class="o">=</span>authentication </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Export audit data</span> </span></span><span class="line"><span class="cl">geode audit <span class="nb">export</span> --start<span class="o">=</span>2026-01-01 --end<span class="o">=</span>2026-01-31 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --format<span class="o">=</span>csv --output<span class="o">=</span>january-audit.csv </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Summary statistics</span> </span></span><span class="line"><span class="cl">geode audit summary --period<span class="o">=</span>24h </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Output:</span> </span></span><span class="line"><span class="cl"><span class="c1"># Authentication Events: 1,234</span> </span></span><span class="line"><span class="cl"><span class="c1"># - Successful logins: 1,180</span> </span></span><span class="line"><span class="cl"><span class="c1"># - Failed logins: 54</span> </span></span><span class="line"><span class="cl"><span class="c1"># Data Access Events: 45,678</span> </span></span><span class="line"><span class="cl"><span class="c1"># - Queries executed: 45,678</span> </span></span><span class="line"><span class="cl"><span class="c1"># - Rows returned: 2,345,678</span> </span></span><span class="line"><span class="cl"><span class="c1"># Modification Events: 1,234</span> </span></span><span class="line"><span class="cl"><span class="c1"># - Nodes created: 456</span> </span></span><span class="line"><span class="cl"><span class="c1"># - Nodes updated: 678</span> </span></span><span class="line"><span class="cl"><span class="c1"># - Nodes deleted: 100</span> </span></span></code></pre></div> <h3 id="security-monitoring" class="position-relative d-flex align-items-center group"> <span>Security Monitoring</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="security-monitoring" aria-haspopup="dialog" aria-label="Share link: Security Monitoring"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="real-time-alerting" class="position-relative d-flex align-items-center group"> <span>Real-Time Alerting</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="real-time-alerting" aria-haspopup="dialog" aria-label="Share link: Real-Time Alerting"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">alerts</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Multiple failed logins</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">brute_force_detection</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">condition</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd"> </span></span></span><span class="line"><span class="cl"><span class="sd"> count(event_type = &#39;authentication&#39; AND subtype = &#39;login_failure&#39;) </span></span></span><span class="line"><span class="cl"><span class="sd"> WHERE actor.ip_address = $ip </span></span></span><span class="line"><span class="cl"><span class="sd"> AND timestamp &gt; now() - interval &#39;5 minutes&#39; </span></span></span><span class="line"><span class="cl"><span class="sd"> &gt; 5</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">notify</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">channel</span><span class="p">:</span><span class="w"> </span><span class="l">slack</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">webhook</span><span class="p">:</span><span class="w"> </span><span class="l">${SLACK_SECURITY_WEBHOOK}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">channel</span><span class="p">:</span><span class="w"> </span><span class="l">pagerduty</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">service_key</span><span class="p">:</span><span class="w"> </span><span class="l">${PAGERDUTY_KEY}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Unusual data access</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">large_data_export</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">condition</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd"> </span></span></span><span class="line"><span class="cl"><span class="sd"> event_type = &#39;data_access&#39; </span></span></span><span class="line"><span class="cl"><span class="sd"> AND operation.rows_returned &gt; 10000</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">notify</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">channel</span><span class="p">:</span><span class="w"> </span><span class="l">email</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">recipients</span><span class="p">:</span><span class="w"> </span><span class="l">[email protected]</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Admin action after hours</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">after_hours_admin</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">condition</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd"> </span></span></span><span class="line"><span class="cl"><span class="sd"> event_type = &#39;admin_action&#39; </span></span></span><span class="line"><span class="cl"><span class="sd"> AND extract(hour from timestamp) NOT BETWEEN 9 AND 17</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">notify</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">channel</span><span class="p">:</span><span class="w"> </span><span class="l">slack</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">webhook</span><span class="p">:</span><span class="w"> </span><span class="l">${SLACK_OPS_WEBHOOK}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Privilege escalation</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">privilege_escalation</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">condition</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd"> </span></span></span><span class="line"><span class="cl"><span class="sd"> event_type = &#39;admin_action&#39; </span></span></span><span class="line"><span class="cl"><span class="sd"> AND subtype IN (&#39;role_assigned&#39;, &#39;permission_granted&#39;) </span></span></span><span class="line"><span class="cl"><span class="sd"> AND details.target_role IN (&#39;admin&#39;, &#39;dba&#39;, &#39;security_admin&#39;)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">notify</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">channel</span><span class="p">:</span><span class="w"> </span><span class="l">email</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">recipients</span><span class="p">:</span><span class="w"> </span><span class="l">[email protected]</span><span class="w"> </span></span></span></code></pre></div> <h4 id="anomaly-detection" class="position-relative d-flex align-items-center group"> <span>Anomaly Detection</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="anomaly-detection" aria-haspopup="dialog" aria-label="Share link: Anomaly Detection"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">anomaly_detection</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Baseline learning period</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">learning_period</span><span class="p">:</span><span class="w"> </span><span class="l">7d</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">detectors</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Unusual access patterns</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">access_pattern_anomaly</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">metric</span><span class="p">:</span><span class="w"> </span><span class="l">queries_per_user_per_hour</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">sensitivity</span><span class="p">:</span><span class="w"> </span><span class="l">medium</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">alert_threshold</span><span class="p">:</span><span class="w"> </span><span class="m">3.0</span><span class="w"> </span><span class="c"># standard deviations</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Unusual data volume</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">data_volume_anomaly</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">metric</span><span class="p">:</span><span class="w"> </span><span class="l">rows_returned_per_user_per_day</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">sensitivity</span><span class="p">:</span><span class="w"> </span><span class="l">high</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">alert_threshold</span><span class="p">:</span><span class="w"> </span><span class="m">2.5</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># New access patterns</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">new_label_access</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">first_time_access</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">alert_on</span><span class="p">:</span><span class="w"> </span><span class="l">label</span><span class="w"> </span></span></span></code></pre></div> <h3 id="siem-integration" class="position-relative d-flex align-items-center group"> <span>SIEM Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="siem-integration" aria-haspopup="dialog" aria-label="Share link: SIEM Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="splunk-integration" class="position-relative d-flex align-items-center group"> <span>Splunk Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="splunk-integration" aria-haspopup="dialog" aria-label="Share link: Splunk Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Install Splunk forwarder</span> </span></span><span class="line"><span class="cl"><span class="c1"># Add Geode audit logs as input</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl">cat &gt; /opt/splunkforwarder/etc/system/local/inputs.conf <span class="s">&lt;&lt;EOF </span></span></span><span class="line"><span class="cl"><span class="s">[monitor:///var/log/geode/audit.log] </span></span></span><span class="line"><span class="cl"><span class="s">disabled = false </span></span></span><span class="line"><span class="cl"><span class="s">sourcetype = geode:audit:json </span></span></span><span class="line"><span class="cl"><span class="s">index = database_audit </span></span></span><span class="line"><span class="cl"><span class="s">EOF</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Configure Splunk to parse Geode audit events</span> </span></span><span class="line"><span class="cl">cat &gt; /opt/splunkforwarder/etc/system/local/props.conf <span class="s">&lt;&lt;EOF </span></span></span><span class="line"><span class="cl"><span class="s">[geode:audit:json] </span></span></span><span class="line"><span class="cl"><span class="s">TIME_FORMAT = %Y-%m-%dT%H:%M:%S.%6N%Z </span></span></span><span class="line"><span class="cl"><span class="s">TIME_PREFIX = &#34;timestamp&#34;:&#34; </span></span></span><span class="line"><span class="cl"><span class="s">KV_MODE = json </span></span></span><span class="line"><span class="cl"><span class="s">EOF</span> </span></span></code></pre></div> <h4 id="elasticsearch-integration" class="position-relative d-flex align-items-center group"> <span>Elasticsearch Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="elasticsearch-integration" aria-haspopup="dialog" aria-label="Share link: Elasticsearch Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># filebeat.yml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">filebeat.inputs</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">log</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">paths</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">/var/log/geode/audit.log</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">json.keys_under_root</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">json.add_error_key</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">fields</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">log_type</span><span class="p">:</span><span class="w"> </span><span class="l">geode_audit</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">fields_under_root</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">output.elasticsearch</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hosts</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&#34;elasticsearch:9200&#34;</span><span class="p">]</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">index</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;geode-audit-%{+yyyy.MM.dd}&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">pipeline</span><span class="p">:</span><span class="w"> </span><span class="l">geode-audit-pipeline</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># Create Elasticsearch pipeline for enrichment</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="l">PUT _ingest/pipeline/geode-audit-pipeline</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span>{<span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&#34;processors&#34;: </span><span class="p">[</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>{<span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&#34;date&#34;: </span>{<span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&#34;field&#34;: </span><span class="s2">&#34;timestamp&#34;</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&#34;formats&#34;: </span><span class="p">[</span><span class="s2">&#34;ISO8601&#34;</span><span class="p">]</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>}<span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>}<span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>{<span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&#34;geoip&#34;: </span>{<span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&#34;field&#34;: </span><span class="s2">&#34;actor.ip_address&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>}<span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>}<span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="p">]</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span>}<span class="w"> </span></span></span></code></pre></div> <h4 id="datadog-integration" class="position-relative d-flex align-items-center group"> <span>Datadog Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="datadog-integration" aria-haspopup="dialog" aria-label="Share link: Datadog Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># datadog.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">logs</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">file</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/var/log/geode/audit.log</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">service</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">source</span><span class="p">:</span><span class="w"> </span><span class="l">geode-audit</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">sourcecategory</span><span class="p">:</span><span class="w"> </span><span class="l">database</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">init_config</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">instances</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">min_collection_interval</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># Add custom metrics from audit events</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">dogstatsd_mapper_profiles</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode_audit</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">prefix</span><span class="p">:</span><span class="w"> </span><span class="l">geode.audit.</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">mappings</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">match</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;authentication.login_success&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;geode.audit.login.success&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">tags</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">auth_method</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;$1&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">match</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;authentication.login_failure&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;geode.audit.login.failure&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">tags</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">reason</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;$1&#34;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="streaming-to-kafka" class="position-relative d-flex align-items-center group"> <span>Streaming to Kafka</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="streaming-to-kafka" aria-haspopup="dialog" aria-label="Share link: Streaming to Kafka"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">output</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">kafka</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">brokers</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">kafka1:9092</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">kafka2:9092</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">kafka3:9092</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">topic</span><span class="p">:</span><span class="w"> </span><span class="l">geode-audit-events</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">compression</span><span class="p">:</span><span class="w"> </span><span class="l">lz4</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">batch_size</span><span class="p">:</span><span class="w"> </span><span class="m">100</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">flush_interval</span><span class="p">:</span><span class="w"> </span><span class="l">1s</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">security</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">SASL_SSL</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">sasl_mechanism</span><span class="p">:</span><span class="w"> </span><span class="l">PLAIN</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">username</span><span class="p">:</span><span class="w"> </span><span class="l">${KAFKA_USERNAME}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">password</span><span class="p">:</span><span class="w"> </span><span class="l">${KAFKA_PASSWORD}</span><span class="w"> </span></span></span></code></pre></div> <h3 id="compliance-reporting" class="position-relative d-flex align-items-center group"> <span>Compliance Reporting</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="compliance-reporting" aria-haspopup="dialog" aria-label="Share link: Compliance Reporting"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="generating-compliance-reports" class="position-relative d-flex align-items-center group"> <span>Generating Compliance Reports</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="generating-compliance-reports" aria-haspopup="dialog" aria-label="Share link: Generating Compliance Reports"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Generate SOC 2 compliance report</span> </span></span><span class="line"><span class="cl">geode audit report --framework<span class="o">=</span>soc2 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --period<span class="o">=</span>Q4-2025 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --output<span class="o">=</span>soc2-q4-2025.pdf </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Generate GDPR data access report</span> </span></span><span class="line"><span class="cl">geode audit report --framework<span class="o">=</span>gdpr <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --data-subject<span class="o">=</span>[email protected] <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --output<span class="o">=</span>gdpr-access-report.pdf </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Generate HIPAA audit report</span> </span></span><span class="line"><span class="cl">geode audit report --framework<span class="o">=</span>hipaa <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --period<span class="o">=</span><span class="m">2025</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --include-evidence<span class="o">=</span><span class="nb">true</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --output<span class="o">=</span>hipaa-2025-audit.pdf </span></span></code></pre></div> <h4 id="automated-compliance-checks" class="position-relative d-flex align-items-center group"> <span>Automated Compliance Checks</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="automated-compliance-checks" aria-haspopup="dialog" aria-label="Share link: Automated Compliance Checks"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">compliance</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">frameworks</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">gdpr</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">hipaa</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">soc2</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">checks</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># GDPR: Records of processing</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">gdpr_article_30</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">frequency</span><span class="p">:</span><span class="w"> </span><span class="l">daily</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd"> </span></span></span><span class="line"><span class="cl"><span class="sd"> SELECT DISTINCT actor.user_id, operation.type, </span></span></span><span class="line"><span class="cl"><span class="sd"> array_agg(DISTINCT operation.labels_accessed) </span></span></span><span class="line"><span class="cl"><span class="sd"> FROM system.audit_log </span></span></span><span class="line"><span class="cl"><span class="sd"> WHERE timestamp &gt; current_timestamp() - INTERVAL &#39;24 hours&#39; </span></span></span><span class="line"><span class="cl"><span class="sd"> GROUP BY actor.user_id, operation.type</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># HIPAA: Access to PHI</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">hipaa_phi_access</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">frequency</span><span class="p">:</span><span class="w"> </span><span class="l">daily</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">query</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd"> </span></span></span><span class="line"><span class="cl"><span class="sd"> SELECT * FROM system.audit_log </span></span></span><span class="line"><span class="cl"><span class="sd"> WHERE operation.labels_accessed &amp;&amp; ARRAY[&#39;Patient&#39;, &#39;MedicalRecord&#39;] </span></span></span><span class="line"><span class="cl"><span class="sd"> AND timestamp &gt; current_timestamp() - INTERVAL &#39;24 hours&#39;</span><span class="w"> </span></span></span></code></pre></div> <h3 id="audit-log-security" class="position-relative d-flex align-items-center group"> <span>Audit Log Security</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="audit-log-security" aria-haspopup="dialog" aria-label="Share link: Audit Log Security"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="protecting-audit-logs" class="position-relative d-flex align-items-center group"> <span>Protecting Audit Logs</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="protecting-audit-logs" aria-haspopup="dialog" aria-label="Share link: Protecting Audit Logs"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">security</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Encrypt audit logs</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">encryption</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">aes-256-gcm</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_source</span><span class="p">:</span><span class="w"> </span><span class="l">hsm</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Sign audit entries for integrity</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">signing</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">algorithm</span><span class="p">:</span><span class="w"> </span><span class="l">ed25519</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_file</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/geode/keys/audit-signing.key</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Immutable storage</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">immutable</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">append_only</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Access control</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">access</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">read_roles</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">security_admin</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">compliance_auditor</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">write_roles</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w"> </span><span class="c"># Only system can write</span><span class="w"> </span></span></span></code></pre></div> <h4 id="log-integrity-verification" class="position-relative d-flex align-items-center group"> <span>Log Integrity Verification</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="log-integrity-verification" aria-haspopup="dialog" aria-label="Share link: Log Integrity Verification"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Verify audit log integrity</span> </span></span><span class="line"><span class="cl">geode audit verify --log-file<span class="o">=</span>/var/log/geode/audit.log </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Output:</span> </span></span><span class="line"><span class="cl"><span class="c1"># Verifying audit log integrity...</span> </span></span><span class="line"><span class="cl"><span class="c1"># Total entries: 1,234,567</span> </span></span><span class="line"><span class="cl"><span class="c1"># Valid signatures: 1,234,567</span> </span></span><span class="line"><span class="cl"><span class="c1"># Chain integrity: OK</span> </span></span><span class="line"><span class="cl"><span class="c1"># No tampering detected</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Verify specific time range</span> </span></span><span class="line"><span class="cl">geode audit verify --start<span class="o">=</span>2026-01-01 --end<span class="o">=</span>2026-01-31 </span></span></code></pre></div> <h3 id="retention-and-archival" class="position-relative d-flex align-items-center group"> <span>Retention and Archival</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="retention-and-archival" aria-haspopup="dialog" aria-label="Share link: Retention and Archival"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="retention-policies" class="position-relative d-flex align-items-center group"> <span>Retention Policies</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="retention-policies" aria-haspopup="dialog" aria-label="Share link: Retention Policies"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># geode.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">retention</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Hot storage (fast access)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hot</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">duration</span><span class="p">:</span><span class="w"> </span><span class="l">30d</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">storage</span><span class="p">:</span><span class="w"> </span><span class="l">/var/log/geode/audit</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Warm storage (compressed)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">warm</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">duration</span><span class="p">:</span><span class="w"> </span><span class="l">365d</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">storage</span><span class="p">:</span><span class="w"> </span><span class="l">/archive/geode/audit</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">compression</span><span class="p">:</span><span class="w"> </span><span class="l">zstd</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Cold storage (long-term archive)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cold</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">duration</span><span class="p">:</span><span class="w"> </span><span class="l">2555d </span><span class="w"> </span><span class="c"># 7 years</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">storage</span><span class="p">:</span><span class="w"> </span><span class="l">s3://audit-archive/geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">encryption</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Automatic purge after retention</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">purge_after_retention</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span></code></pre></div> <h4 id="archival-commands" class="position-relative d-flex align-items-center group"> <span>Archival Commands</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="archival-commands" aria-haspopup="dialog" aria-label="Share link: Archival Commands"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Archive old audit logs</span> </span></span><span class="line"><span class="cl">geode audit archive --older-than<span class="o">=</span>30d <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --destination<span class="o">=</span>s3://audit-archive/geode <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --compress<span class="o">=</span><span class="nb">true</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Restore archived logs for investigation</span> </span></span><span class="line"><span class="cl">geode audit restore --date-range<span class="o">=</span>2025-01-01:2025-03-31 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --source<span class="o">=</span>s3://audit-archive/geode <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --destination<span class="o">=</span>/tmp/audit-investigation </span></span></code></pre></div> <h3 id="best-practices" class="position-relative d-flex align-items-center group"> <span>Best Practices</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="best-practices" aria-haspopup="dialog" aria-label="Share link: Best Practices"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="1-enable-audit-logging-in-production" class="position-relative d-flex align-items-center group"> <span>1. Enable Audit Logging in Production</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="1-enable-audit-logging-in-production" aria-haspopup="dialog" aria-label="Share link: 1. Enable Audit Logging in Production"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Always run with at least security-level auditing</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enabled</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">level</span><span class="p">:</span><span class="w"> </span><span class="l">security </span><span class="w"> </span><span class="c"># minimum for production</span><span class="w"> </span></span></span></code></pre></div> <h4 id="2-protect-audit-log-integrity" class="position-relative d-flex align-items-center group"> <span>2. Protect Audit Log Integrity</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="2-protect-audit-log-integrity" aria-haspopup="dialog" aria-label="Share link: 2. Protect Audit Log Integrity"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">security</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">signing</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">immutable</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">encryption</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span></code></pre></div> <h4 id="3-implement-real-time-monitoring" class="position-relative d-flex align-items-center group"> <span>3. Implement Real-Time Monitoring</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="3-implement-real-time-monitoring" aria-haspopup="dialog" aria-label="Share link: 3. Implement Real-Time Monitoring"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">alerts</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">critical_events</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">condition</span><span class="p">:</span><span class="w"> </span><span class="l">severity = &#39;critical&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">action</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">notify</span><span class="p">:</span><span class="w"> </span><span class="l">immediate</span><span class="w"> </span></span></span></code></pre></div> <h4 id="4-align-retention-with-compliance" class="position-relative d-flex align-items-center group"> <span>4. Align Retention with Compliance</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="4-align-retention-with-compliance" aria-haspopup="dialog" aria-label="Share link: 4. Align Retention with Compliance"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Common retention requirements:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># - GDPR: No specific requirement (balance with data minimization)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># - HIPAA: 6 years</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># - SOC 2: 1 year minimum, 3+ years recommended</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># - PCI DSS: 1 year minimum</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">retention</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">duration</span><span class="p">:</span><span class="w"> </span><span class="l">2555d </span><span class="w"> </span><span class="c"># 7 years covers most requirements</span><span class="w"> </span></span></span></code></pre></div> <h4 id="5-regular-audit-log-review" class="position-relative d-flex align-items-center group"> <span>5. Regular Audit Log Review</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="5-regular-audit-log-review" aria-haspopup="dialog" aria-label="Share link: 5. Regular Audit Log Review"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Schedule regular reviews</span> </span></span><span class="line"><span class="cl"><span class="c1"># Daily: Security events</span> </span></span><span class="line"><span class="cl"><span class="c1"># Weekly: Access patterns</span> </span></span><span class="line"><span class="cl"><span class="c1"># Monthly: Compliance summary</span> </span></span><span class="line"><span class="cl"><span class="c1"># Quarterly: Full audit review</span> </span></span></code></pre></div> <h3 id="troubleshooting" class="position-relative d-flex align-items-center group"> <span>Troubleshooting</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="troubleshooting" aria-haspopup="dialog" aria-label="Share link: Troubleshooting"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="missing-events" class="position-relative d-flex align-items-center group"> <span>Missing Events</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="missing-events" aria-haspopup="dialog" aria-label="Share link: Missing Events"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Check audit configuration</span> </span></span><span class="line"><span class="cl">geode audit config show </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Verify event types enabled</span> </span></span><span class="line"><span class="cl">geode audit config show <span class="p">|</span> grep events </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Check for disk space issues</span> </span></span><span class="line"><span class="cl">df -h /var/log/geode </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Check audit log permissions</span> </span></span><span class="line"><span class="cl">ls -la /var/log/geode/audit.log </span></span></code></pre></div> <h4 id="performance-impact" class="position-relative d-flex align-items-center group"> <span>Performance Impact</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="performance-impact" aria-haspopup="dialog" aria-label="Share link: Performance Impact"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Optimize audit performance</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">audit</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">async</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">buffer_size</span><span class="p">:</span><span class="w"> </span><span class="m">10000</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">flush_interval</span><span class="p">:</span><span class="w"> </span><span class="l">5s</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">batch_writes</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># Exclude high-volume, low-value events</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">exclude</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">event_type</span><span class="p">:</span><span class="w"> </span><span class="l">data_access</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">operation.query</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;MATCH (n) RETURN count(n)&#34;</span><span class="w"> </span><span class="c"># Health checks</span><span class="w"> </span></span></span></code></pre></div> <h3 id="related-topics" class="position-relative d-flex align-items-center group"> <span>Related Topics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="related-topics" aria-haspopup="dialog" aria-label="Share link: Related Topics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><a href="/tags/compliance/" >Compliance</a> - Regulatory compliance frameworks</li> <li><a href="/tags/security/" >Security</a> - Security overview</li> <li><a href="/tags/authorization/" >Authorization</a> - Access control</li> <li><a href="/tags/rbac/" >RBAC</a> - Role-based access control</li> <li><a href="/tags/encryption/" >Encryption</a> - Data encryption</li> <li><a href="/tags/monitoring/" >Monitoring</a> - System monitoring</li> </ul> <h3 id="further-reading" class="position-relative d-flex align-items-center group"> <span>Further Reading</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="further-reading" aria-haspopup="dialog" aria-label="Share link: Further Reading"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><a href="/docs/ops/audit-logging/" >Audit Logging Guide</a> - Complete audit configuration</li> <li><a href="/docs/security/overview/" >Security Overview</a> - Meeting regulatory requirements</li> <li><a href="/docs/architecture/security-architecture/" >Security Architecture</a> - Security design</li> <li>SIEM Integration Whitepaper - Enterprise logging integration</li> </ul>

Related Articles

No articles found with this tag yet.

Back to Home