بازدان بۆ ناوەڕۆک

گۆڕینی کلیلی سەرەکی و واژۆ، و دەستڕاگەیشتنی فریاکەوتن

کلیلی سەرەکی بگۆڕە کە زانیارییە نهێنییە هەڵگیراوەکان دەپارێزێت و دەستڕاگەیشتنی فریاکەوتن بەکاربهێنە.

بینین وەک Markdown

ئەو کۆنتڕۆڵانەی لە 21-compliance.md بەشی 14دان کە پشکنەر بە ناویان داوایان دەکات. ئەم پەڕەیە ڕێکارەکەیە؛ ئەو تۆمارانەی دروست دەکات بەڵگەن.

کلیلەکان

هەر زانیارییەکی نهێنیی هەڵگیراو بە کلیلی تازەی نهێنیکردنی داتا (DEK) دادەپۆشرێت. کلیلی DEK بە کلیلی سەرەکی (KEK) دەگوردرێتەوە و ئاماژەی کلیلی سەرەکی لە تەنیشتی هەڵدەگیرێت (key_ref یان ئاماژەکە لەناو نرخێکی پێکهاتوودا). گۆڕینی کلیلی سەرەکی DEKەکان دووبارە دەگورێتەوە. هەرگیز زانیارییەکی نهێنییەک ناخوێنێتەوە و دووبارە نهێنی ناکاتەوە.

ڕێکخستن واتا
QUIRE_MASTER_KEY کلیلی سەرەکیی ئێستا: 32 بایت، base64. هەر نهێنییەکی نوێ بەو کلیلیە دەگوردرێتەوە
QUIRE_MASTER_KEY_VERSION ناسنامەی وەشانی. ئەگەر دانەنرابێت v1ە. هەر جار کلیلی دەگۆڕیت وەشانەکە بەرز بکەرەوە
QUIRE_MASTER_KEY_RETIRED کلیلە کۆنەکان کە لەوانەیە نهێنییەکان هێشتا بەوانە گوردرابێتن، وەک v1=<base64>,v0=<base64>. دەخوێندرێنەوە، هەرگیز نانووسرێن

توڕی وێب، worker و فەرمانی bun run kek:rotate هەمان سێ ڕێکخستن دەخوێننەوە. هەموویان دەبێت هەمان نرخەکانیان هەبێت، یان یەکێکیان ناتوانێت ئەوە بکاتەوە کە ئەوی تر داپۆشیویەتی.

ئەگەر QUIRE_MASTER_KEY نەبێت، هەر سیستەمێک ئەو کلیلیە بەکار دەهێنێت کە لە QUIRE_SECRET_KEY دروستی دەکات. ئەمە کار دەکات، پەڕەی تەندروستیی سیستەم دۆخەکە وەک لاواز نیشان دەدات و دوای دانانی کلیلی سەرەکی خوێندنەوە بەردەوام دەبێت؛ ئەوەش ڕێگای گۆڕینی یەکەمە بۆ گواستنەوەی هەموو شتێک لەو کلیلیە. هەر کەسێک بتوانێت ژینگەی پرۆسەکە بخوێنێتەوە دەتوانێت هەموو زانیارییە نهێنییە هەڵگیراوەکان بکاتەوە؛ بۆیە دامەزراندنی بەرهەمهێنان دەبێت کلیلی سەرەکیی هەبێت کە لە کۆگای نهێنی بپارێزرێت و لەگەڵ بنکەدراوەدا لە هەمان پاڵپشتی دانەنرێت.

گۆڕین

تەمەنی کلیل لە کۆنسۆڵی پلاتفۆرم، ئاسایش، کلیلی سەرەکی و وەک پێوەری quire.secrets.master_key.age (ڕۆژ) پیشان دەدرێت. خشتەی ڕۆژانەی platform.key_age (03:41 UTC) کاتێک کلیلەکە 365 ڕۆژ تەمەن دەکات تۆماری بیرخستنەوە لە زنجیرەی پشکنینی پلاتفۆرم دەنووسێت، و هەر 30 ڕۆژ دووبارە دەینووسێتەوە تا کلیلەکە بگۆڕدرێت. کاتێک بیرخستنەوەکە هات کلیلەکە بگۆڕە، هەروەها هەرکاتێک لەوانەیە کلیلیەک ئاشکرا بووبێت.

  1. کلیلی نوێ دروست بکە: openssl rand -base64 32.
  2. QUIRE_MASTER_KEY بۆی دابنێ و QUIRE_MASTER_KEY_VERSION بۆ ناسنامەی داهاتوو (v2) دابنێ. کلیلی کۆن بگوازەوە بۆ QUIRE_MASTER_KEY_RETIRED وەک v1=<old base64>. کۆپیی هەردووکیان لە شوێنێکی جگە لەم میواندارە هەڵبگرە.
  3. توڕی وێب و worker بە ڕێکخستنە نوێکان بڵاو بکەرەوە. نهێنییە نوێکان ئێستا لەژێر env:QUIRE_MASTER_KEY:v2 دەگوردرێنەوە؛ کۆنەکان هێشتا بە کلیلی لابراو دەکرێنەوە.
  4. گۆڕینەکە داوا بکە و هۆکارەکەی کە لە مێژووی پشکنین دەمێنێتەوە بنووسە:
    • لە کۆنسۆڵ: ئاسایش، کلیلی سەرەکی، گۆڕینی کلیلی سەرەکی؛ یان
    • لە shellێک بە هەمان ژینگە: bun run kek:rotate request --reason "Annual rotation, ticket SEC-114".
  5. worker هەر خولەک پارچەیەک دووبارە دەگورێتەوە (خشتەی platform.key_rotationی scheduler) و دوای دەستپێکردنەوە بەردەوام دەبێت. بۆ تەواوکردنی بە یەک دانیشتن: bun run kek:rotate run. بە bun run kek:rotate status چاودێریی بکە.
  6. کاتێک تۆمارەکە دەڵێت گۆڕین تەواو بووە بە سفر چارەسەرنەکراو و سفر سەرنەکەوتوو، کلیلی لابراو لە QUIRE_MASTER_KEY_RETIRED بسڕەوە و دووبارە بڵاوی بکەرەوە. تا ئەوکاتە بهێڵەرەوەی: ئەو نرخەی نەیتوانیوە بیگوازێتەوە هێشتا بە کلیلی کۆن داپۆشراوە.

کارەکە کام شوێنانە دەگەڕێت

هەموو ئەو کۆگانەی DEKی گوراوە هەڵدەگرن: ئەوانەی لە SEALED_STORESدان (apps/worker/src/key-rotation.ts). کۆگای بنکەدراوەی کۆنترۆڵ لەسەر بنکەدراوەی کۆنترۆڵ دەگەڕێت؛ کۆگای دامەزراوە بە نهێنییی ڕیزی بنکەدراوە یەک دامەزراوە جارێک دەگەڕێت، لە هەر بنکەدراوەیەک کە دامەزراوەکەی تێدایە، بۆیە tenantێک بە بنکەدراوەی تایبەت جێگیر کرابێت لە هەمان بنکەدراوەدا کلیلەکەی دەگۆڕدرێت. ئەگەر schema ستوونی کلیلگوراوەی زیاد بکات کە لیستەکە ناوی نەبات تاقیکردنەوەیەک شکست دەهێنێت؛ تاقیکردنەوەیەکی تر ئەگەر پێداچوونەوەی زانیارییە نهێنییەکان ستوونی داپۆشراو بە شێوەیەک پۆلێن بکات کە لیستەکە لەبیری کردبێت.

تۆمارەکە

  • ops.key_rotation: یەک ڕیز بۆ هەر گۆڕانێک، لەگەڵ هۆکار، داواکار، دۆخ و کۆی گشتی (دووبارەگوراوە، پێشتر ئێستا، چارەسەرنەکراو، سەرنەکەوتوو).
  • ops.key_rotation_progress: دوای گەڕانی کۆگایەک و بوارێک یەک ڕیز، لەگەڵ ئاماژەی کلیلە نەتوانراوەکان بخوێندرێنەوە و ژمارەی ئەو نرخانەی لە ژێر هەر یەک دان. گۆڕینێکی دووبارەدەستپێکراو ئەمانە جێدەهێڵێت.
  • زنجیرەی پشکنینی پلاتفۆرم: platform/key_rotation_request (لەگەڵ هۆکار)، یەک platform/key_rotation_store بۆ هەر کۆگایەک لەگەڵ ژمارەکان، و platform/key_rotation_complete یان platform/key_rotation_fail؛ platform/key_age_reminder بۆ بیرخستنەوە.
  • پێوەرەکان: quire.secrets.master_key.age و quire.secrets.rewrap.outstanding (ئەو نرخانەی گۆڕینی پێشوو نەیتوانی بیگوازێتەوە).

کاتێک نرخەکان چارەسەرنەکراون

نرخێکی چارەسەرنەکراو بە ئاماژەی کلیلیەک گوراوە کە ئەم دامەزراندنە لای نییە، یان لە شێوەی ئەوەی ستوونەکە بەڵێنی داوە نییە. تۆماری پێشکەوتن ئاماژەکە ناو دەبات (بۆ نموونە env:QUIRE_MASTER_KEY:v0 (unreadable)). ئەو کلیلیە بگەڕێنەوە بۆ QUIRE_MASTER_KEY_RETIRED و گۆڕینێکی تر جێبەجێ بکە؛ یان ئەگەر کلیلەکە بۆ هەمیشە ون بووە، داوا لە بەڕێوەبەری دامەزراوەکە بکە زانیارییە نهێنییەکە دووبارە بنووسێتەوە، ئەوسا بە کلیلی ئێستا دادەپۆشرێت. گۆڕینی سەرنەکەوتوو هەڵەکەی لە تۆمارەکەدا پیشان دەدات؛ هۆکارەکە چاک بکە و دووبارە داوا بکە.

کلیلەکانی واژۆ

جیا لە کلیلی سەرەکی: هەر دامەزراوەیەک tokenەکانی OpenID Connect و پەیامەکانی LTI بە کلیلی RSAی خۆی واژۆ دەکات کە لە /.well-known/jwks.json بڵاوکراوەتەوە. لێرە هیچ کارێکی بەرپرسی سیستەم پێویست نییە. خشتەی کاتژمێری platform.signing_keys کلیلێکی جێگرەوە حەوت ڕۆژ پێش تەواوبوونی نۆزدەی ڕۆژی کلیلی ئێستا بڵاو دەکاتەوە؛ هەفتەیەک دواتر کلیلی جێگرەوە واژۆ دەست پێ دەکات و کۆنەکە دەچێتە دۆخی کۆتایی؛ نۆزدە ڕۆژ دواتر کلیلی کۆن دەسڕدرێتەوە و لە کۆمەڵەکلیلەکە دەردەچێت. هەر هەنگاوێک تۆماری platform/signing_key_advance لە زنجیرەی پشکنینی پلاتفۆرمە.

بۆ گۆڕینی پێشوەختی کلیلی دامەزراوەیەک، بۆ نموونە دوای ئاشکرا بوون:

  • لە کۆنسۆڵ: ئاسایش، کلیلی سەرەکی، بڵاوکردنەوەی کلیلی واژۆی نوێ (پێویستی بە platform/keys_manage هەیە)؛ یان
  • لە shell بە ژینگەی worker: bun run kek:rotate signing-keys rotate --tenant <slug or id> --reason "Key exposed, INC-3310". bun run kek:rotate signing-keys status هەموو کلیلەکانی دامەزراوە بە قۆناغ لیست دەکات.

کلیلی نوێ یەکسەر بڵاو دەکرێتەوە و دوای حەوت ڕۆژ واژۆ دەکات، کاتێک کلیلی ئێستا کۆتایی دێت. ئەو هەفتەیە بە ئەنقەستە: لایەنە پشتبەستووەکان کۆمەڵەکلیلەکە cache دەکەن و پەیوەندیی کورتتر هەموو ئامرازەکان لە یەکجاردا دەشکێنێت. کلیلی کۆتایی بۆ نۆزدە ڕۆژی تر لە کۆمەڵەکلیلەکەدا دەمێنێتەوە بۆ ئەوەی tokenە واژۆکراوەکان بەردەوام پشتڕاست بکرێنەوە. ئەگەر ئاشکرا بوون واتە پێویستە زووتر متمانەی پێ نەکرێت، سڕینەوەی ڕیزی کلیلیەکە گۆڕانکارییەکەیە کە بەرپرسی سیستەم بە دەستڕاگەیشتنی تایبەتی خۆی بە بنکەدراوە و لەژێر تۆماری گۆڕانکاری ئەنجامی دەدات (دەستڕاگەیشتنی فریاکەوتن تەنها بۆ خوێندنەوەیە)؛ tokenە واژۆکراوەکانی بەو کلیلیە پاشان پشتڕاست ناکرێنەوە. گۆڕینی زۆرەملێ platform/signing_key_rotateە لە زنجیرەی پشکنین لەگەڵ هۆکارەکە. worker بۆ گورینی کلیلی نوێ هەمان ڕێکخستنەکانی QUIRE_MASTER_KEYی توڕی وێب پێویستە؛ گۆڕینی کلیلی سەرەکی بە bun run kek:rotate کلیلەکانی واژۆ لەگەڵ هەموو شتێکی تر دووبارە دەگورێتەوە (oauth_signing_key لە SEALED_STORESدایە).

دەستڕاگەیشتنی فریاکەوتنی بەرهەمهێنان

هیچ کەسێک دەستڕاگەیشتنی بەردەوامی بۆ بەرهەمهێنان نییە. کاتێک شتێک ناتوانێت چاوەڕێ بکات، خاوەنێک مۆڵەتی فریاکەوتن دەدات: کۆنسۆڵی پلاتفۆرم، ئاسایش، دەستڕاگەیشتنی فریاکەوتن.

  • مۆڵەتەکە بوارێکی هەیە (یەک دامەزراوە یان تۆماری پلاتفۆرم)، هۆکارێک بە لانیکەم 20 پیت کە ڕووداو یان تیکەت ناو دەبات و ماوەیەک لە 5 تا 240 خولەک. خۆی کۆتایی دێت: لەسەر هەر ڕستەیەک بەرامبەر کات پشکنین دەکرێت.
  • دەتوانرێت بۆ خاوەنەکەی داواکار دابنرێت یان بۆ خاوەنێکی تر (شێوازی دوو کەسی). تەنها ئەو کەسەی بۆی دەرکراوە دەتوانێت بەکاری بهێنێت. دەرکردن پێویستی بە platform/break_glass_issue و بەکارهێنان بە platform/break_glass_use هەیە؛ بەپێی بنەڕەت هەردووکیان تەنها بۆ خاوەندن.
  • ڕستەکان لە gatewayدا جێبەجێ دەبن، نەک لە ژوورەوەی داتابەیس: تەنها خوێندنەوە، یەک لە جار، سنووردار بە دامەزراوە یان تۆماری کۆنترۆڵ، بە timeoutی پێنج چرکە و زۆرترین 500 ڕیز. نرخە دووانەکان بە قەبارە پیشان دەدرێن.
  • زنجیرەی پشکنینی پلاتفۆرم دەرکردن (لەگەڵ هۆکار)، هەڵوەشاندنەوە، هەر ڕستەیەک پێش جێبەجێکردنی (platform/break_glass_statement، ڕستەی ڕەتکراوە لەگەڵ ئەنجامی denied) و هەر ئەنجامێک (platform/break_glass_result) تۆمار دەکات. ops.break_glass_statement ناسێنەرەکانی تۆماری پشکنین هەڵدەگرێت، بۆیە تۆماری دەرکردن بە تۆمارە پەیوەندیدارەکانی پشکنینەوە دەبەسترێتەوە.
  • نووسین پێشکەش ناکرێت. گۆڕانکارییەک کە ناتوانێت چاوەڕێی وەشان بکات بە دەستڕاگەیشتنی تایبەتی بەرپرسی سیستەم لە بنکەدراوە و لەژێر تۆماری گۆڕانکاریی خۆیدا، دەرەوەی ئەم بەرنامەیە ئەنجام دەدرێت؛ تۆمارەکە دەبێت ئاماژە بە ناسێنەری ڕووداو بکات کە لێرە بەکاربراوە.

بۆچی زانیاریی چوونەژوورەوەی بنکەدراوە نادەین: چوونەژوورەوەی Postgres دوای کۆتایی دانیشتن کە داوای کردووە بەردەوام دەبێت، ئاسایشی ئاستی ڕیز کە بەرنامەکە پشتی پێ دەبەستێت تێدەپەڕێنێت و ناتوانێت لە زنجیرەی پشکنینی ئەم بەرنامەیە بنووسێت؛ بۆیە ڕستەکانی تەنها ئەوەندە پشکنین دەکرێن کە کەسێک تۆماری ڕاژەکەی ناردبێت. gateway تۆماری پشکنین دەکاتە تایبەتمەندیی خودی دەستڕاگەیشتن، نەک ڕێوڕەسمێکی دەوروبەری.

بۆ وەڵامدانەوەی داواکاریی پشکنین: مۆڵەتەکان لە ماوەکەدا لیست بکە (دەستڕاگەیشتنی فریاکەوتن)، مێژووی مۆڵەتێک بکەرەوە بۆ بینینی ڕستەکان و ناسێنەرەکانی تۆماری پشکنین، و ئەو تۆمارانە لە زنجیرەی پشکنینی پلاتفۆرم بخوێنەوە (bun run audit:verify --platform تەواوی زنجیرەکە دەسەلمێنێت).

ڕێنیشاندەر

بۆ گەڕان بنووسە…

↑↓ بۆ گەڕان↵ بۆ هەڵبژاردنEsc بۆ داخستن