Secrets vault
AiHummer әрбір тіркелгі деректемесін — арна токендерін, SMTP/IMAP құпиясөздерін, OAuth токендерін, әр-жалгер LLM кілттерін (BYOK) — шифрланған secrets vault ішінде сақтайды. Vault envelope шифрлауды пайдаланады, осылайша тыныштықтағы мән тек дерекқордан ешқашан оқылмайды, және ол құпия ешқашан модель контекстіне немесе журналдарға орналастырылмайтындай етіп жасалған.
Envelope шифрлау
Vault екі деңгейлі кілт иерархиясын пайдаланады:
- Master кілт (KEK) —
AIHUMMER_MASTER_KEYретінде берілген, base64-кодталған 32-байтты мән — деректер кілттерін орайды және ашады. Ол ешқашан хосттан шықпайды және ешқашан дерекқорға жазылмайды. - Әр-жалгер деректерді шифрлау кілті (DEK) нақты құпия мәндерді AES-256-GCM (аутентификацияланған шифрлау) арқылы шифрлайды. Әрбір жалгердің өз DEK-і бар, сондықтан бір жалгердің кілттері басқа жалгердің құпияларын шеше алмайды.
Құпия мәндер шифрмәтін ретінде сақталады; DEK KEK арқылы оралған күйде сақталады. Шифрды шешу құпия қажет болған сәтте жадыда орын алады (мысалы, коннектор аутентификацияланғанда), ал ашық мәтін кейін жойылады.
AIHUMMER_MASTER_KEY (KEK) ──wraps──▶ per-tenant DEK ──AES-256-GCM──▶ secret value
[!NOTE] Vault PostgreSQL-дің
pgcryptoкеңейтіміне сүйенеді. Оның дерекқорыңызда қолжетімді екеніне көз жеткізіңіз — ол стандартты жүйе талаптарының бір бөлігі.
Master кілт
Master кілт — bootstrap мәні: ол іске қосылу кезінде ортадан оқылады және әкімші UI-ден конфигурацияланбайды.
# /home/.aihummer/etc/gateway.env
# 32 random bytes, base64-encoded
AIHUMMER_MASTER_KEY=Base64Of32RandomBytes==
Сіз оны мынадай жолмен генерациялай аласыз:
openssl rand -base64 32
[!WARNING] Master кілт vault ішіндегі бәрінің шифрын шешу үшін қажет. Оны құпияларыңыздың түбірі сияқты қарастырыңыз және оны дерекқордан бөлек сақтық көшіріңіз — егер оны жоғалтсаңыз, шифрланған мәндерді қалпына келтіру мүмкін емес. Сақтық көшіру бойынша нұсқаулықты Операциялар бөлімінен қараңыз.
Master кілтсіз
Егер AIHUMMER_MASTER_KEY орнатылмаса, vault және оған тәуелді бәрі
өшіріледі: тыныштықтағы құпияларды сақтау, тіркелгі деректемелер vault-ы
және әр-жалгер BYOK кілттері — бәрі өшіріледі. Бұл әдейі жасалған fail-closed
тәртібі — өнім құпияларды үнсіз ашық мәтінде сақтауға қайта оралмайды.
Құпиялар ешқашан модельге жетпейді
Бұл — vault-тың ең маңызды сипаты, және ол саясатты еске салу емес, құрылымдық сипат.
[!DANGER] Құпиялар жүйелік промптқа, әңгіме тарихына немесе модельге көрінетін кез келген мәтінге ешқашан енгізілмейді, және олар журналдарға ешқашан жазылмайды. Тіркелгі деректемесін қажет ететін құралдар оны шақыру кезінде vault-тан, gateway ішінде шешеді және оны шығыс сұранысты аутентификациялау үшін пайдаланады — модель тек құрал шақыруының нәтижесін ғана көреді, құпияны емес.
Интерактивтілік құрал шақыруымен басқарылатындықтан (қараңыз: Guardrails және prompt-injection қорғанысы), промпт модельден сақталған құпияны “оқып беруді” сұрай алатын жол жоқ: модельде оны оқуға арналған көшірмесі жоқ.
Ортақ және әр-пайдаланушы тіркелгі деректемелері
Vault ортақ (жұмыс кеңістігі деңгейіндегі) тіркелгі деректемелерін және жеке (әр-пайдаланушы) тіркелгі деректемелерін ажыратады. Connections ағыны арқылы алынған әр-пайдаланушы OAuth2 токендері vault-та сақталады және әрекет етуші пайдаланушы арқылы шешіледі, орынды жерлерде жұмыс кеңістігіне fallback бар. Бұл бір ғана құралға әртүрлі пайдаланушылардың атынан өздерінің авторизациясымен әрекет етуге мүмкіндік береді, бір пайдаланушының токенін басқасына ешқашан ашпай.
Әрі қарай қайда
- RBAC және scoped API кілттері — vault-пен қамтамасыз етілген конфигурацияны кім оқи немесе өзгерте алады.
- Row-Level Security — vault-ты қолдайтын дерекқордағы әр-жалгер оқшаулауы.
- Guardrails және prompt-injection қорғанысы — модельді құпияны шығаруға неге ешқашан алдауға болмайтыны.