Lesson 97 — Intermediate

Data Privacy, PII & Secrets

LLM app mein data har jagah ghoomta hai — prompts, logs, traces, memory, vector store, eval datasets. Har jagah copy sensitive ho sakta hai. Is lesson mein tum seekhoge sensitive data identify karna, redact/minimize karna, logs se bahar rakhna, retention/residency ke controls, aur secrets ko model se door rakhne ka pattern.

⏱ 20 min• Intermediate• RAG & Knowledge Security

AI privacy ka funda

WHAT

Privacy ka matlab: sirf wahi sensitive data collect aur transmit karna jo zaroori hai, usse redact/minimize karna, aur uski life (log, trace, memory, backup) par control rakhna.

WHEN

Customer data, HR data, financial data, health, contracts — jahan bhi insaan ka data ho. Public model APIs ke saath toh mandatory check, internal models par bhi zaroori.

WHERE

Ingress par redaction, storage par minimization, logs/traces par scrubbing, contracts par zero-retention terms, aur secrets par broker pattern — sab alag controls hain.

Funda: data jo kabhi store hi nahi hua, woh leak bhi nahi hoga. Isliye pehla control minimization hai (bhejo hi mat), redaction doosra. Log "debug ke liye rakh lunga" — yeh 2GB PII dump ban jaata hai jo breach report mein sabse pehle dikhta hai.

Data types pehle likho: Har field par sawaal: yeh model ko chahiye bhi? Chahiye toh full ya masked? Kitne din store? Kaun access karega? Yeh chaar sawaal privacy design ki neev hain.

Identify aur redact

import re

PATTERNS = {
    "email":   re.compile(r"[\w.+-]+@[\w-]+\.[\w.]+"),
    "phone":   re.compile(r"(?<!\d)(?:\+91[- ]?)?[6-9]\d{9}(?!\d)"),
    "aadhaar": re.compile(r"(?<!\d)\d{4}[ -]?\d{4}[ -]?\d{4}(?!\d)"),
    "card":    re.compile(r"(?<!\d)\d{4}[ -]\d{4}[ -]\d{4}[ -]\d{4}(?!\d)"),
}

def redact(text: str) -> str:
    for kind, pat in PATTERNS.items():
        text = pat.sub(f"[{kind.upper()}]", text)
    return text

# LLM call se pehle: redact(user_text). Regex basic hai — production
# mein NER-based PII detector (jaise Microsoft Presidio) bhi chalao.
# Dono miss hote hain, isliye minimization (zaroori field hi bhejo)
# first-class control hai, redaction uska backup.
Honest limit: Koi bhi detector perfect nahi — regex pattern miss karta hai, NER context. Isliye "detect zyada se zyada, block jab doubt ho" wala mode rakho, aur high-risk paths par minimization hi karo.

Logs, traces aur memory se PII bahar

import logging

REDACT_FIELDS = {"user_email", "phone", "customer_name", "query_text"}

def scrub(d: dict) -> dict:
    return {k: ("[REDACTED]" if k in REDACT_FIELDS else v)
            for k, v in d.items()}

class PrivacyFilter(logging.Filter):
    def filter(self, record):
        if isinstance(record.msg, dict):
            record.msg = scrub(record.msg)
        return True

# Tracing frameworks, eval datasets aur memory stores par bhi wahi rule:
# default scrub ON, raw text OFF. Retention chhoti rakho (days, months nahi).
Debug vs breach: Jahan bhi log karo, wahan socho: agar yeh file leak ho jaaye toh kya dikh jaayega? Jawab "customer ki baatein" hai toh scrub pehle likho, baad mein nahi.

Retention, residency aur provider terms

Sawaal jo har vendor par poochho: kya store hota hai, kitne din, kaun dekh sakta hai, kaise delete hota hai, aur kya training mein use hota hai. Jawab documentation mein likha ho, werna assume mat karo.

Reality check: Zero-retention provider bhi tumhare application-side logs ko nahi rokta — woh tumhari zimmedari hai. Vendor terms + app controls, dono chahiye.

Secrets ko model se door rakho

# Secrets tumhare service layer mein rehte hain — model ko sirf reference.
BROKER = {
    "charge_refund": lambda args: stripe.refund(
        key=os.environ["STRIPE_KEY"],      # key kabhi prompt mein nahi
        charge_id=args["charge_id"],
        amount=args["amount"]),
}

def tool_router(name, args):
    if name not in BROKER:
        raise PermissionError("unknown tool")
    return BROKER[name](args)

# Model ko tool schema dikhao, key nahi. System prompt, conversation
# history ya tool results — kahin bhi key nahi. Compromised model ya
# prompt leak ho jaaye toh bhi key safe — wahi broker pattern ka point hai.

Exercise

Question: Phone, email, account number jaise personal data ka full form? (3 akshar)

Question: Sensitive text ko detect kar ke placeholder se hatana — ek shabd, English?

Question: Provider ke saath zero ___ clauses — data retain na ho, training mein na jaaye? (ek shabd)

Question: Secret ko model se bachane ka pattern: key service mein, model ko sirf ___? (ek shabd, English)

Common mistakes

Desi example: KYC — poora document nahi, last 4 digits

Bank ko verify karne ke liye poora aadhaar copy dene ki zaroorat nahi — number ke last 4 digits kaafi. AI pipeline bhi wahi: model ko zaroori field bhejo, sensitive poora document nahi:

text
bhejne se pehle:
  poora doc  ->  redact(user_text)  ->  model call
  [phone] [email] placeholders ban jaate hain, kaam chalta hai
# Jo cheez bhejni hi nahi, woh leak bhi nahi ho sakti — minimization
Interview angle — yahan se sawaal aate hain
  • Q: AI system mein sensitive data kahan kahan chhup jaata hai? (prompts, logs, traces, memory, vector store, eval datasets, backups — har jagah alag control)
  • Q: Redaction aur minimization mein farq? (detect+mask karna vs bilkul na bhejna — minimization stronger hai, redaction backup)
  • Q: Regulated deployment ke liye kya chahiye? (private connectivity, residency control, contractual zero-retention/no-training terms, deletion workflow)
  • Q: Secret handling sahi kaise hoga? (env/secret manager, model ko sirf tool reference, scoped short-lived tokens, secret scanning in CI)
Lesson complete?

Data minimize ho gaya. Agla lesson — Red Teaming AI Systems — ab in defenses ko khud attack kar ke test karoge.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course