<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 --> <p>Geode is designed to help organizations meet stringent regulatory compliance requirements across multiple frameworks including GDPR, HIPAA, SOC2, PCI DSS, and industry-specific regulations. This comprehensive guide covers how Geode&rsquo;s security features support compliance objectives and best practices for deploying compliant graph database systems.</p> <h3 id="compliance-framework-overview" class="position-relative d-flex align-items-center group"> <span>Compliance Framework 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="compliance-framework-overview" aria-haspopup="dialog" aria-label="Share link: Compliance Framework 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>Modern enterprises must comply with multiple regulatory frameworks simultaneously. Geode provides the technical controls and capabilities needed to satisfy requirements across:</p> <ul> <li><strong>GDPR</strong>: European data protection and privacy regulation</li> <li><strong>HIPAA</strong>: US healthcare data protection</li> <li><strong>SOC2</strong>: Service organization security controls</li> <li><strong>PCI DSS</strong>: Payment card industry data security</li> <li><strong>ISO 27001</strong>: Information security management</li> <li><strong>CCPA</strong>: California Consumer Privacy Act</li> <li><strong>FedRAMP</strong>: US federal cloud security</li> </ul> <h3 id="gdpr-compliance" class="position-relative d-flex align-items-center group"> <span>GDPR 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="gdpr-compliance" aria-haspopup="dialog" aria-label="Share link: GDPR 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> </h3><p>The General Data Protection Regulation (GDPR) imposes strict requirements on organizations that process personal data of EU residents. Geode provides technical capabilities to support GDPR compliance:</p> <h4 id="right-to-access-article-15" class="position-relative d-flex align-items-center group"> <span>Right to Access (Article 15)</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="right-to-access-article-15" aria-haspopup="dialog" aria-label="Share link: Right to Access (Article 15)"> <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>Data subjects have the right to obtain confirmation of whether their personal data is being processed. Geode supports this through comprehensive query capabilities:</p> <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">Retrieve</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">personal</span><span class="w"> </span><span class="py">data</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">a</span><span class="w"> </span><span class="py">specific</span><span class="w"> </span><span class="py">data</span><span class="w"> </span><span class="py">subject</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="nv">$data_subject_email</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">OPTIONAL</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">related</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="p">,</span><span class="w"> </span><span class="py">r</span><span class="p">,</span><span class="w"> </span><span class="py">related</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">Find</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">locations</span><span class="w"> </span><span class="py">where</span><span class="w"> </span><span class="py">personal</span><span class="w"> </span><span class="py">data</span><span class="w"> </span><span class="py">appears</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">n</span><span class="p">)</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">n</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nv">$data_subject_email</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">OR</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">ssn</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nv">$data_subject_ssn</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">OR</span><span class="w"> </span><span class="py">n</span><span class="err">.</span><span class="py">phone</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nv">$data_subject_phone</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">labels</span><span class="p">(</span><span class="py">n</span><span class="p">),</span><span class="w"> </span><span class="py">properties</span><span class="p">(</span><span class="py">n</span><span class="p">)</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="right-to-erasure-article-17" class="position-relative d-flex align-items-center group"> <span>Right to Erasure (Article 17)</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="right-to-erasure-article-17" aria-haspopup="dialog" aria-label="Share link: Right to Erasure (Article 17)"> <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>Data subjects can request deletion of their personal data. Geode supports complete and auditable deletion:</p> <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">Delete</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">personal</span><span class="w"> </span><span class="py">data</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">a</span><span class="w"> </span><span class="py">data</span><span class="w"> </span><span class="py">subject</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="nv">$data_subject_email</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">DETACH</span><span class="w"> </span><span class="py">DELETE</span><span class="w"> </span><span class="py">p</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">Anonymize</span><span class="w"> </span><span class="py">data</span><span class="w"> </span><span class="py">while</span><span class="w"> </span><span class="py">preserving</span><span class="w"> </span><span class="py">graph</span><span class="w"> </span><span class="py">structure</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="nv">$data_subject_email</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">SET</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">anonymized</span><span class="nd">@deleted</span><span class="err">.</span><span class="py">local</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">p</span><span class="err">.</span><span class="py">name</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">Deleted</span><span class="w"> </span><span class="py">User</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">p</span><span class="err">.</span><span class="py">ssn</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">NULL</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">phone</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">NULL</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">deleted_at</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">current_timestamp</span><span class="p">()</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div><p>All deletion operations are logged in audit trails with:</p> <ul> <li>Timestamp of deletion</li> <li>User who performed the deletion</li> <li>Data subject identifier</li> <li>Reason for deletion (if provided)</li> <li>Confirmation of cascading deletions</li> </ul> <h4 id="right-to-data-portability-article-20" class="position-relative d-flex align-items-center group"> <span>Right to Data Portability (Article 20)</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="right-to-data-portability-article-20" aria-haspopup="dialog" aria-label="Share link: Right to Data Portability (Article 20)"> <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>Data subjects can receive their personal data in a structured, machine-readable format:</p> <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">Export</span><span class="w"> </span><span class="py">all</span><span class="w"> </span><span class="py">personal</span><span class="w"> </span><span class="py">data</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">structured</span><span class="w"> </span><span class="py">format</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">email</span><span class="p">:</span><span class="w"> </span><span class="nv">$data_subject_email</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">OPTIONAL</span><span class="w"> </span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="err">-</span><span class="p">[</span><span class="py">r</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">related</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><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="py">personal_info</span><span class="p">:</span><span class="w"> </span><span class="nc">properties</span><span class="p">(</span><span class="py">p</span><span class="p">),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">relationships</span><span class="p">:</span><span class="w"> </span><span class="nc">collect</span><span class="p">({</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="kd">type</span><span class="p">:</span><span class="w"> </span><span class="nc">type</span><span class="p">(</span><span class="nc">r</span><span class="p">),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">target</span><span class="p">:</span><span class="w"> </span><span class="nc">labels</span><span class="p">(</span><span class="py">related</span><span class="p">),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">properties</span><span class="p">:</span><span class="w"> </span><span class="nc">properties</span><span class="p">(</span><span class="py">r</span><span class="p">)</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="p">}</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">data_export</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="data-protection-by-design-article-25" class="position-relative d-flex align-items-center group"> <span>Data Protection by Design (Article 25)</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-protection-by-design-article-25" aria-haspopup="dialog" aria-label="Share link: Data Protection by Design (Article 25)"> <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>Geode implements privacy-enhancing features by default:</p> <ul> <li><strong>Encryption at rest</strong>: All data encrypted using AES-256-GCM</li> <li><strong>Encryption in transit</strong>: TLS 1.3 for all connections</li> <li><strong>Pseudonymization</strong>: Support for hashed identifiers</li> <li><strong>Data minimization</strong>: Field-level access control limits exposure</li> <li><strong>Purpose limitation</strong>: Row-level security enforces usage boundaries</li> </ul> <h4 id="records-of-processing-activities-article-30" class="position-relative d-flex align-items-center group"> <span>Records of Processing Activities (Article 30)</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="records-of-processing-activities-article-30" aria-haspopup="dialog" aria-label="Share link: Records of Processing Activities (Article 30)"> <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>Comprehensive audit logging documents all processing activities:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Configure GDPR-compliant audit logging</span> </span></span><span class="line"><span class="cl">geode serve --audit-log-level<span class="o">=</span>compliance <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-retention-days<span class="o">=</span><span class="m">2555</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-events<span class="o">=</span>data_access,data_modification,data_deletion,data_export <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-include-legal-basis<span class="o">=</span><span class="nb">true</span> </span></span></code></pre></div><p>Audit logs capture:</p> <ul> <li>What personal data was accessed</li> <li>When it was accessed</li> <li>Who accessed it</li> <li>Purpose of access (via session metadata)</li> <li>Legal basis for processing</li> </ul> <h4 id="breach-notification-article-33" class="position-relative d-flex align-items-center group"> <span>Breach Notification (Article 33)</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="breach-notification-article-33" aria-haspopup="dialog" aria-label="Share link: Breach Notification (Article 33)"> <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>Geode&rsquo;s security monitoring helps detect and respond to data breaches:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Monitor for unusual access patterns</span> </span></span><span class="line"><span class="cl">jq <span class="s1">&#39;select(.event_type == &#34;authorization_failure&#34;)&#39;</span> audit.log <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> <span class="p">|</span> jq -s <span class="s1">&#39;group_by(.user.ip_address) | map(select(length &gt; 10))&#39;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Identify mass data exports</span> </span></span><span class="line"><span class="cl">jq <span class="s1">&#39;select(.operation.rows_returned &gt; 1000 and .operation.type == &#34;SELECT&#34;)&#39;</span> audit.log </span></span></code></pre></div> <h3 id="hipaa-compliance" class="position-relative d-flex align-items-center group"> <span>HIPAA 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="hipaa-compliance" aria-haspopup="dialog" aria-label="Share link: HIPAA 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> </h3><p>The Health Insurance Portability and Accountability Act requires covered entities to protect health information. Geode provides technical safeguards for HIPAA compliance:</p> <h4 id="administrative-safeguards" class="position-relative d-flex align-items-center group"> <span>Administrative Safeguards</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-safeguards" aria-haspopup="dialog" aria-label="Share link: Administrative Safeguards"> <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><strong>164.308(a)(1)(ii)(D) - Information System Activity Review</strong></p> <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 for HIPAA</span> </span></span><span class="line"><span class="cl">geode serve --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-phi-access<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-retention-days<span class="o">=</span><span class="m">2555</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-log-encryption<span class="o">=</span>aes-256-gcm </span></span></code></pre></div><p><strong>164.308(a)(3) - Workforce Security</strong></p> <p>Implement role-based access control:</p> <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">Create</span><span class="w"> </span><span class="py">roles</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">different</span><span class="w"> </span><span class="py">workforce</span><span class="w"> </span><span class="py">members</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">ROLE</span><span class="w"> </span><span class="py">physician</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">ROLE</span><span class="w"> </span><span class="py">nurse</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">ROLE</span><span class="w"> </span><span class="py">billing_clerk</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">ROLE</span><span class="w"> </span><span class="py">researcher</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">Grant</span><span class="w"> </span><span class="py">minimum</span><span class="w"> </span><span class="py">necessary</span><span class="w"> </span><span class="py">permissions</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">GRANT</span><span class="w"> </span><span class="py">SELECT</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">Patient</span><span class="w"> </span><span class="py">TO</span><span class="w"> </span><span class="py">physician</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">GRANT</span><span class="w"> </span><span class="py">SELECT</span><span class="p">,</span><span class="w"> </span><span class="py">INSERT</span><span class="p">,</span><span class="w"> </span><span class="py">UPDATE</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">MedicalRecord</span><span class="w"> </span><span class="py">TO</span><span class="w"> </span><span class="py">physician</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">GRANT</span><span class="w"> </span><span class="py">SELECT</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">Patient</span><span class="w"> </span><span class="py">TO</span><span class="w"> </span><span class="py">nurse</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">assigned_nurse</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">current_user</span><span class="p">()</span><span class="err">;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">GRANT</span><span class="w"> </span><span class="py">SELECT</span><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">BillingInfo</span><span class="w"> </span><span class="py">TO</span><span class="w"> </span><span class="py">billing_clerk</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="physical-safeguards" class="position-relative d-flex align-items-center group"> <span>Physical Safeguards</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="physical-safeguards" aria-haspopup="dialog" aria-label="Share link: Physical Safeguards"> <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><strong>164.310(d) - Device and Media Controls</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Secure backup with encryption</span> </span></span><span class="line"><span class="cl">geode backup create --encryption<span class="o">=</span>aes-256-gcm <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --output<span class="o">=</span>/secure/backup/location <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --verify-integrity<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"># Secure disposal of old data</span> </span></span><span class="line"><span class="cl">geode data-purge --before-date<span class="o">=</span>2019-01-01 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --secure-delete<span class="o">=</span>7-pass <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-log<span class="o">=</span><span class="nb">true</span> </span></span></code></pre></div> <h4 id="technical-safeguards" class="position-relative d-flex align-items-center group"> <span>Technical Safeguards</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="technical-safeguards" aria-haspopup="dialog" aria-label="Share link: Technical Safeguards"> <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><strong>164.312(a)(1) - Access Control</strong></p> <p>Unique user identification and automatic logoff:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Configure session security</span> </span></span><span class="line"><span class="cl">geode serve --session-timeout<span class="o">=</span><span class="m">900</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --require-unique-identifiers<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> --automatic-logoff<span class="o">=</span><span class="nb">true</span> </span></span></code></pre></div><p><strong>164.312(b) - Audit Controls</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Comprehensive audit controls</span> </span></span><span class="line"><span class="cl">geode serve --audit-events<span class="o">=</span>all <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-log-immutable<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-integrity-check<span class="o">=</span>hourly </span></span></code></pre></div><p><strong>164.312(c) - Integrity Controls</strong></p> <p>Cryptographic checksums for data integrity:</p> <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 integrity verification</span> </span></span><span class="line"><span class="cl">geode serve --data-integrity-checks<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> --checksum-algorithm<span class="o">=</span>sha256 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --verify-on-read<span class="o">=</span><span class="nb">true</span> </span></span></code></pre></div><p><strong>164.312(d) - Person or Entity Authentication</strong></p> <p>Multi-factor authentication support:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Require MFA for PHI access</span> </span></span><span class="line"><span class="cl">geode serve --require-mfa<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> --mfa-providers<span class="o">=</span>totp,webauthn <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --mfa-grace-period<span class="o">=</span><span class="m">0</span> </span></span></code></pre></div><p><strong>164.312(e) - Transmission Security</strong></p> <p>TLS 1.3 encryption for all transmissions:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Enforce secure transmission</span> </span></span><span class="line"><span class="cl">geode serve --tls-min-version<span class="o">=</span>1.3 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --tls-cipher-suites<span class="o">=</span>TLS_AES_256_GCM_SHA384 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --require-client-certificates<span class="o">=</span><span class="nb">true</span> </span></span></code></pre></div> <h4 id="minimum-necessary-standard" class="position-relative d-flex align-items-center group"> <span>Minimum Necessary Standard</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="minimum-necessary-standard" aria-haspopup="dialog" aria-label="Share link: Minimum Necessary Standard"> <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>Implement minimum necessary access:</p> <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">Row</span><span class="err">-</span><span class="py">level</span><span class="w"> </span><span class="py">security</span><span class="w"> </span><span class="py">for</span><span class="w"> </span><span class="py">minimum</span><span class="w"> </span><span class="py">necessary</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">POLICY</span><span class="w"> </span><span class="py">minimum_necessary_physicians</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">Patient</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">FOR</span><span class="w"> </span><span class="py">SELECT</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">TO</span><span class="w"> </span><span class="py">physician</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">USING</span><span class="w"> </span><span class="p">(</span><span class="py">assigned_physician</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">current_user</span><span class="p">())</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="py">CREATE</span><span class="w"> </span><span class="py">POLICY</span><span class="w"> </span><span class="py">minimum_necessary_researchers</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="py">Patient</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">FOR</span><span class="w"> </span><span class="py">SELECT</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">TO</span><span class="w"> </span><span class="py">researcher</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">USING</span><span class="w"> </span><span class="p">(</span><span class="py">patient_id</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">(</span><span class="py">SELECT</span><span class="w"> </span><span class="py">patient_id</span><span class="w"> </span><span class="py">FROM</span><span class="w"> </span><span class="py">research_cohort</span><span class="w"> </span><span class="py">WHERE</span><span class="w"> </span><span class="py">researcher</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="py">current_user</span><span class="p">()))</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">WITH</span><span class="w"> </span><span class="py">COLUMNS</span><span class="w"> </span><span class="p">(</span><span class="py">age</span><span class="p">,</span><span class="w"> </span><span class="py">diagnosis</span><span class="p">,</span><span class="w"> </span><span class="py">treatment</span><span class="p">)</span><span class="w"> </span><span class="err">--</span><span class="w"> </span><span class="py">Exclude</span><span class="w"> </span><span class="py">name</span><span class="p">,</span><span class="w"> </span><span class="py">SSN</span><span class="p">,</span><span class="w"> </span><span class="py">address</span><span class="w"> </span></span></span></code></pre></div> <h3 id="soc-2-compliance" class="position-relative d-flex align-items-center group"> <span>SOC 2 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="soc-2-compliance" aria-haspopup="dialog" aria-label="Share link: SOC 2 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> </h3><p>Service Organization Control 2 focuses on security, availability, processing integrity, confidentiality, and privacy. Geode supports all five trust service criteria:</p> <h4 id="security-common-criteria" class="position-relative d-flex align-items-center group"> <span>Security (Common Criteria)</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-common-criteria" aria-haspopup="dialog" aria-label="Share link: Security (Common Criteria)"> <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><strong>CC6.1 - Logical and Physical Access Controls</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Implement comprehensive access controls</span> </span></span><span class="line"><span class="cl">geode serve --rbac-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> --require-authentication<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> --password-policy<span class="o">=</span>strict <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --session-security<span class="o">=</span>high </span></span></code></pre></div><p><strong>CC6.2 - Identification and Authentication</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Strong authentication requirements</span> </span></span><span class="line"><span class="cl">geode serve --password-min-length<span class="o">=</span><span class="m">14</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --password-complexity<span class="o">=</span>high <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --password-rotation-days<span class="o">=</span><span class="m">90</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --lockout-threshold<span class="o">=</span><span class="m">5</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --lockout-duration<span class="o">=</span>30min </span></span></code></pre></div><p><strong>CC6.6 - Logical and Physical Access Controls - Vulnerabilities</strong></p> <p>Regular security updates and vulnerability management:</p> <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 for security updates</span> </span></span><span class="line"><span class="cl">geode version --check-updates --security-only </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Enable security monitoring</span> </span></span><span class="line"><span class="cl">geode serve --security-monitoring<span class="o">=</span>enabled <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vulnerability-scanning<span class="o">=</span>continuous </span></span></code></pre></div><p><strong>CC7.2 - System Monitoring - Detection of Security Events</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Real-time security monitoring</span> </span></span><span class="line"><span class="cl">geode serve --security-events<span class="o">=</span>alert <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --alert-channels<span class="o">=</span>email,pagerduty,slack <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --alert-threshold<span class="o">=</span>medium </span></span></code></pre></div> <h4 id="availability" class="position-relative d-flex align-items-center group"> <span>Availability</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="availability" aria-haspopup="dialog" aria-label="Share link: Availability"> <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><strong>A1.2 - Environmental Protections</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># High availability configuration</span> </span></span><span class="line"><span class="cl">geode serve --mode<span class="o">=</span>cluster <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --replication-factor<span class="o">=</span><span class="m">3</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --auto-failover<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> --health-check-interval<span class="o">=</span>10s </span></span></code></pre></div> <h4 id="processing-integrity" class="position-relative d-flex align-items-center group"> <span>Processing 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="processing-integrity" aria-haspopup="dialog" aria-label="Share link: Processing 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><p><strong>PI1.5 - Data Validation</strong></p> <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">Schema</span><span class="w"> </span><span class="py">constraints</span><span class="w"> </span><span class="py">ensure</span><span class="w"> </span><span class="py">data</span><span class="w"> </span><span class="py">integrity</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="py">CONSTRAINT</span><span class="w"> </span><span class="py">valid_ssn</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Patient</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">ASSERT</span><span class="w"> </span><span class="py">p</span><span class="err">.</span><span class="py">ssn</span><span class="w"> </span><span class="py">MATCHES</span><span class="w"> </span><span class="err">&#39;^\</span><span class="py">d</span><span class="p">{</span><span class="py">3</span><span class="p">}</span><span class="err">-\</span><span class="py">d</span><span class="p">{</span><span class="py">2</span><span class="p">}</span><span class="err">-\</span><span class="py">d</span><span class="p">{</span><span class="py">4</span><span class="p">}</span><span class="err">$&#39;;</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="py">CREATE</span><span class="w"> </span><span class="py">CONSTRAINT</span><span class="w"> </span><span class="py">valid_email</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">ON</span><span class="w"> </span><span class="p">(</span><span class="py">u</span><span class="p">:</span><span class="nc">User</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">ASSERT</span><span class="w"> </span><span class="py">u</span><span class="err">.</span><span class="py">email</span><span class="w"> </span><span class="py">MATCHES</span><span class="w"> </span><span class="err">&#39;^</span><span class="p">[</span><span class="py">a</span><span class="err">-</span><span class="py">zA</span><span class="err">-</span><span class="py">Z0</span><span class="err">-</span><span class="py">9</span><span class="err">.</span><span class="py">_</span><span class="err">%+-</span><span class="p">]</span><span class="err">+@</span><span class="p">[</span><span class="py">a</span><span class="err">-</span><span class="py">zA</span><span class="err">-</span><span class="py">Z0</span><span class="err">-</span><span class="py">9</span><span class="err">.-</span><span class="p">]</span><span class="err">+\.</span><span class="p">[</span><span class="py">a</span><span class="err">-</span><span class="py">zA</span><span class="err">-</span><span class="py">Z</span><span class="p">]{</span><span class="py">2</span><span class="p">,}</span><span class="err">$&#39;;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="confidentiality" class="position-relative d-flex align-items-center group"> <span>Confidentiality</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="confidentiality" aria-haspopup="dialog" aria-label="Share link: Confidentiality"> <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><strong>C1.2 - Encryption of Confidential Information</strong></p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Comprehensive encryption</span> </span></span><span class="line"><span class="cl">geode serve --encryption-at-rest<span class="o">=</span>aes-256-gcm <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --encryption-in-transit<span class="o">=</span>tls-1.3 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --key-rotation-days<span class="o">=</span><span class="m">90</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --encryption-key-provider<span class="o">=</span>hsm </span></span></code></pre></div> <h4 id="privacy" class="position-relative d-flex align-items-center group"> <span>Privacy</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="privacy" aria-haspopup="dialog" aria-label="Share link: Privacy"> <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><strong>P4.2 - Obtaining Consent</strong></p> <p>Track consent in the graph:</p> <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">Model</span><span class="w"> </span><span class="py">consent</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">the</span><span class="w"> </span><span class="py">graph</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nv">$person_id</span><span class="p">})</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nc">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">c</span><span class="p">:</span><span class="nc">Consent</span><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="py">purpose</span><span class="p">:</span><span class="w"> </span><span class="err">&#39;</span><span class="nc">marketing</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">granted_at</span><span class="p">:</span><span class="w"> </span><span class="nc">current_timestamp</span><span class="p">(),</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">granted_by</span><span class="p">:</span><span class="w"> </span><span class="nv">$person_id</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nc">expires_at</span><span class="p">:</span><span class="w"> </span><span class="nc">timestamp</span><span class="p">()</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">duration</span><span class="p">(</span><span class="err">&#39;</span><span class="py">P1Y</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">can_revoke</span><span class="p">:</span><span class="w"> </span><span class="nc">true</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="py">CREATE</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">)</span><span class="err">-</span><span class="p">[:</span><span class="nc">GRANTED</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="py">c</span><span class="p">)</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">Enforce</span><span class="w"> </span><span class="py">consent</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">queries</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">p</span><span class="p">:</span><span class="nc">Person</span><span class="w"> </span><span class="p">{</span><span class="py">id</span><span class="p">:</span><span class="w"> </span><span class="nv">$person_id</span><span class="p">})</span><span class="err">-</span><span class="p">[:</span><span class="nc">GRANTED</span><span class="p">]</span><span class="err">-&gt;</span><span class="p">(</span><span class="nc">c</span><span class="p">:</span><span class="nc">Consent</span><span class="p">)</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">c</span><span class="err">.</span><span class="py">purpose</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="err">&#39;</span><span class="py">marketing</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">c</span><span class="err">.</span><span class="py">expires_at</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></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">p</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h3 id="pci-dss-compliance" class="position-relative d-flex align-items-center group"> <span>PCI DSS 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="pci-dss-compliance" aria-haspopup="dialog" aria-label="Share link: PCI DSS 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> </h3><p>For organizations handling payment card data, Geode supports PCI DSS requirements:</p> <h4 id="requirement-2-strong-cryptography" class="position-relative d-flex align-items-center group"> <span>Requirement 2: Strong Cryptography</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="requirement-2-strong-cryptography" aria-haspopup="dialog" aria-label="Share link: Requirement 2: Strong Cryptography"> <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"># PCI DSS compliant encryption</span> </span></span><span class="line"><span class="cl">geode serve --encryption-algorithm<span class="o">=</span>aes-256-gcm <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --key-length<span class="o">=</span><span class="m">256</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --tls-version<span class="o">=</span>1.3 </span></span></code></pre></div> <h4 id="requirement-8-strong-access-control" class="position-relative d-flex align-items-center group"> <span>Requirement 8: Strong Access Control</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="requirement-8-strong-access-control" aria-haspopup="dialog" aria-label="Share link: Requirement 8: Strong Access Control"> <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"># PCI DSS access controls</span> </span></span><span class="line"><span class="cl">geode serve --password-min-length<span class="o">=</span><span class="m">15</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --password-complexity<span class="o">=</span>strict <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --mfa-required<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> --session-timeout<span class="o">=</span><span class="m">900</span> </span></span></code></pre></div> <h4 id="requirement-10-audit-logging" class="position-relative d-flex align-items-center group"> <span>Requirement 10: 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="requirement-10-audit-logging" aria-haspopup="dialog" aria-label="Share link: Requirement 10: 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> </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"># PCI DSS audit requirements</span> </span></span><span class="line"><span class="cl">geode serve --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-tamper-proof<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-retention-days<span class="o">=</span><span class="m">365</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --audit-review-frequency<span class="o">=</span>daily </span></span></code></pre></div> <h4 id="data-masking-for-pci" class="position-relative d-flex align-items-center group"> <span>Data Masking for PCI</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-masking-for-pci" aria-haspopup="dialog" aria-label="Share link: Data Masking for PCI"> <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">Mask</span><span class="w"> </span><span class="py">credit</span><span class="w"> </span><span class="py">card</span><span class="w"> </span><span class="py">numbers</span><span class="w"> </span><span class="py">in</span><span class="w"> </span><span class="py">logs</span><span class="w"> </span><span class="py">and</span><span class="w"> </span><span class="py">queries</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">MATCH</span><span class="w"> </span><span class="p">(</span><span class="py">txn</span><span class="p">:</span><span class="nc">Transaction</span><span class="p">)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">RETURN</span><span class="w"> </span><span class="py">txn</span><span class="err">.</span><span class="py">id</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">substring</span><span class="p">(</span><span class="py">txn</span><span class="err">.</span><span class="py">card_number</span><span class="p">,</span><span class="w"> </span><span class="py">0</span><span class="p">,</span><span class="w"> </span><span class="py">4</span><span class="p">)</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="err">&#39;********&#39;</span><span class="w"> </span><span class="err">+</span><span class="w"> </span><span class="py">substring</span><span class="p">(</span><span class="py">txn</span><span class="err">.</span><span class="py">card_number</span><span class="p">,</span><span class="w"> </span><span class="err">-</span><span class="py">4</span><span class="p">,</span><span class="w"> </span><span class="py">4</span><span class="p">)</span><span class="w"> </span><span class="py">AS</span><span class="w"> </span><span class="py">masked_card</span><span class="p">,</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">txn</span><span class="err">.</span><span class="py">amount</span><span class="err">;</span><span class="w"> </span></span></span></code></pre></div> <h3 id="compliance-monitoring" class="position-relative d-flex align-items-center group"> <span>Compliance 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="compliance-monitoring" aria-haspopup="dialog" aria-label="Share link: Compliance 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="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-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Run compliance validation</span> </span></span><span class="line"><span class="cl">geode compliance-check --framework<span class="o">=</span>gdpr,hipaa,soc2 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --report-format<span class="o">=</span>json <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --output<span class="o">=</span>compliance-report.json </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Example output:</span> </span></span><span class="line"><span class="cl"><span class="c1"># {</span> </span></span><span class="line"><span class="cl"><span class="c1"># &#34;framework&#34;: &#34;GDPR&#34;,</span> </span></span><span class="line"><span class="cl"><span class="c1"># &#34;status&#34;: &#34;compliant&#34;,</span> </span></span><span class="line"><span class="cl"><span class="c1"># &#34;checks&#34;: {</span> </span></span><span class="line"><span class="cl"><span class="c1"># &#34;encryption_at_rest&#34;: &#34;pass&#34;,</span> </span></span><span class="line"><span class="cl"><span class="c1"># &#34;encryption_in_transit&#34;: &#34;pass&#34;,</span> </span></span><span class="line"><span class="cl"><span class="c1"># &#34;audit_logging&#34;: &#34;pass&#34;,</span> </span></span><span class="line"><span class="cl"><span class="c1"># &#34;data_retention&#34;: &#34;pass&#34;,</span> </span></span><span class="line"><span class="cl"><span class="c1"># &#34;access_controls&#34;: &#34;pass&#34;</span> </span></span><span class="line"><span class="cl"><span class="c1"># },</span> </span></span><span class="line"><span class="cl"><span class="c1"># &#34;recommendations&#34;: []</span> </span></span><span class="line"><span class="cl"><span class="c1"># }</span> </span></span></code></pre></div> <h4 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> </h4><p>Generate compliance reports for auditors:</p> <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 compliance-report --framework<span class="o">=</span>soc2 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --start-date<span class="o">=</span>2025-01-01 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --end-date<span class="o">=</span>2025-12-31 <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>soc2-report-2025.pdf </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Generate GDPR data processing report</span> </span></span><span class="line"><span class="cl">geode compliance-report --framework<span class="o">=</span>gdpr <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --report-type<span class="o">=</span>processing-activities <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --include-legal-basis<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>gdpr-article-30-report.pdf </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><ol> <li><strong>Defense in Depth</strong>: Implement multiple layers of security controls</li> <li><strong>Regular Audits</strong>: Conduct periodic compliance audits and gap assessments</li> <li><strong>Documentation</strong>: Maintain detailed documentation of security controls and processes</li> <li><strong>Training</strong>: Ensure all users understand their compliance responsibilities</li> <li><strong>Monitoring</strong>: Implement continuous compliance monitoring and alerting</li> <li><strong>Incident Response</strong>: Develop and test incident response procedures</li> <li><strong>Third-Party Risk</strong>: Assess compliance of all third-party integrations</li> <li><strong>Data Lifecycle</strong>: Implement compliant data retention and deletion policies</li> <li><strong>Encryption Everywhere</strong>: Encrypt data at rest, in transit, and in use</li> <li><strong>Principle of Least Privilege</strong>: Grant minimum necessary access</li> </ol> <h3 id="compliance-certifications" class="position-relative d-flex align-items-center group"> <span>Compliance Certifications</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-certifications" aria-haspopup="dialog" aria-label="Share link: Compliance Certifications"> <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><p>Geode undergoes regular third-party audits and maintains certifications:</p> <ul> <li><strong>SOC 2 Type II</strong>: Annual audit by independent CPA firms</li> <li><strong>ISO 27001</strong>: Information security management certification</li> <li><strong>FedRAMP</strong>: Authorized for US federal government use</li> <li><strong>HIPAA</strong>: Business Associate Agreement available</li> <li><strong>GDPR</strong>: Data Processing Agreement available</li> </ul> <p>Contact <a href="mailto:[email protected]" >[email protected]</a> for certification documentation.</p> <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/audit-logging/" >Audit Logging</a> - Comprehensive audit logging and compliance tracking</li> <li><a href="/tags/row-level-security/" >Row-Level Security</a> - Fine-grained access control</li> <li><a href="/tags/encryption/" >Encryption</a> - Data encryption at rest and in transit</li> <li><a href="/tags/governance/" >Governance</a> - Data governance policies and enforcement</li> <li><a href="/tags/configuration/" >Configuration</a> - Security configuration best practices</li> <li><a href="/docs/security/overview/" >Security Overview</a> - Security documentation</li> </ul>

Related Articles