စာရင်းစစ်သူ အမည်ပေး၍ တောင်းသော 21-compliance.md အပိုင်း ၁၄ ရှိ ထိန်းချုပ်မှုများ။ ဤစာမျက်နှာက လုပ်ထုံးလုပ်နည်း ဖြစ်သည်။ ၎င်းထုတ်လုပ်သောမှတ်တမ်းများက သက်သေ ဖြစ်သည်။
သော့များ
သိမ်းထားသောအထောက်အထားတိုင်းကို လတ်ဆတ်သောဒေတာစာဝှက်သော့ (DEK) ဖြင့်
တံဆိပ်ခတ်သည်။ DEK ကို မာစတာသော့ (KEK) ဖြင့် ထုပ်ပိုးပြီး၊ မာစတာသော့၏အကိုးအကားကို
၎င်းဘေးတွင် သိမ်းသည် (key_ref၊ သို့မဟုတ် ထုပ်ပိုးတန်ဖိုးအတွင်းရှိ အကိုးအကား)။
မာစတာသော့ လှည့်ပြောင်းခြင်းက DEK များ ပြန်ထုပ်ပိုးသည်။ အထောက်အထားတစ်ခု ဘယ်တော့မှ
စာဝှက်ဖြည် သို့မဟုတ် ပြန်စာဝှက်မထားပါ။
| ဆက်တင် | အဓိပ္ပာယ် |
|---|---|
QUIRE_MASTER_KEY |
လက်ရှိမာစတာသော့– 32 byte၊ base64။ လျှို့ဝှက်ချက်အသစ်တိုင်း ၎င်းအောက် ထုပ်ပိုးသည် |
QUIRE_MASTER_KEY_VERSION |
၎င်း၏ဗားရှင်းတံဆိပ်။ မသတ်မှတ်ထားလျှင် v1။ သော့ ပြောင်းတိုင်း မြှင့်ပါ |
QUIRE_MASTER_KEY_RETIRED |
သိမ်းထားသောလျှို့ဝှက်ချက်များ ရှိနေနိုင်သေးသောအစောသော့များ၊ v1=<base64>,v0=<base64> အဖြစ်။ ဖတ်၊ ဘယ်တော့မှ မရေး |
ဝဘ်အဆင့်၊ အလုပ်သမားနှင့် bun run kek:rotate အမိန့်က တူညီသောဆက်တင်သုံးခု ဖတ်သည်။
၎င်းတို့ အားလုံး တူညီသောတန်ဖိုးများ ရှိရမည်၊ သို့မဟုတ်ပါက တစ်ခုက
အခြားတစ်ခုတံဆိပ်ခတ်သည့်အရာ ဖွင့်၍မရပါ။
QUIRE_MASTER_KEY မရှိပါက စနစ်ခွဲတစ်ခုစီ QUIRE_SECRET_KEY မှ
ဆင်းသက်သောသော့ ဆက်ထားသည်။ ထိုအလုပ် ဖြစ်သည်၊ System health စာမျက်နှာက ၎င်းကို
ယိုယွင်းအဖြစ် ပြသသည်၊ မာစတာသော့ သတ်မှတ်ပြီးနောက် ဖတ်နိုင်ဆက်ရှိနေသည်၊
ပထမလှည့်ပြောင်းမှုက အရာအားလုံး ၎င်းမှဖယ်ပုံ ဖြစ်သည်။ လုပ်ငန်းစဉ်ပတ်ဝန်းကျင်
ဖတ်နိုင်သူမဆို သိမ်းထားသောအထောက်အထားတိုင်း စာဝှက်ဖြည်နိုင်သောကြောင့်၊
ထုတ်လုပ်ရေးတပ်ဆင်မှုတွင် မာစတာသော့ ရှိသင့်သည်၊ လျှို့ဝှက်သိုလှောင်မှုတွင် သိမ်းပြီး
ဒေတာဘေ့စ်နှင့် တူညီသောအရန်တွင် မဟုတ်ပါ။
လှည့်ပြောင်းခြင်း
သော့သက်တမ်း Platform console၊ Security၊ Master key တွင်၊ မက်ထရစ်
quire.secrets.master_key.age (ရက်များ) အဖြစ် ပြသသည်။ နေ့စဉ် platform.key_age
အချိန်ဇယား (03:41 UTC) က သော့ ၃၆၅ ရက် ရောက်သည့်အခါ ပလက်ဖောင်းစာရင်းစစ်ကွင်းဆက်သို့
သတိပေးထည့်သွင်းမှု ရေးသည်၊ လှည့်ပြောင်းသည်အထိ ရက် ၃၀ တိုင်း ထပ်ရေးသည်။
သတိပေးချက်တွင် လှည့်ပြောင်းပါ၊ သော့ ပေါက်ကြားနိုင်သည့်အခါတိုင်း။
- သော့အသစ် ထုတ်လုပ်ပါ–
openssl rand -base64 32။ QUIRE_MASTER_KEYကို ၎င်းအဖြစ်၊QUIRE_MASTER_KEY_VERSIONကို နောက်တံဆိပ် (v2) အဖြစ် သတ်မှတ်ပါ။ သော့ဟောင်းကိုQUIRE_MASTER_KEY_RETIREDသို့v1=<old base64>အဖြစ် ရွှေ့ပါ။ နှစ်ခုစလုံး၏မိတ္တူကို ဤအိမ်ရှင်အပြင် အခြားနေရာ၌ ထားပါ။- ဝဘ်အဆင့်နှင့် အလုပ်သမား ဆက်တင်အသစ်များဖြင့် ဖြန့်ကျက်ပါ။ လျှို့ဝှက်ချက်အသစ်များ
ယခု
env:QUIRE_MASTER_KEY:v2အောက် ထုပ်ပိုးသည်။ ဟောင်းများ အငြိမ်းစားသော့မှတစ်ဆင့် ဖွင့်နေဆဲ။ - လှည့်ပြောင်းမှု တောင်းဆိုပါ၊ စာရင်းစစ်လမ်းကြောင်းတွင် တည်မည့်အကြောင်းရင်းနှင့်အတူ–
- ကွန်ဆိုးလ်တွင်– Security၊ Master key၊ Rotate the master key။ သို့မဟုတ်
- တူညီသောပတ်ဝန်းကျင်ပါသော shell တွင်–
bun run kek:rotate request --reason "Annual rotation, ticket SEC-114"။
- အလုပ်သမားက တစ်မိနစ်တစ်ချပ် ပြန်ထုပ်ပိုးသည် (အချိန်ဇယားဆွဲသူ၏
platform.key_rotationအချိန်ဇယား)၊ ပြန်လည်စတင်ပြီးနောက် ပြန်စသည်။ တစ်ထိုင်တည်း ပြီးရန်–bun run kek:rotate run။bun run kek:rotate statusဖြင့် စောင့်ကြည့်ပါ။ - မှတ်တမ်းက လှည့်ပြောင်းမှု မဖြေရှင်းရသေး သုည မအောင်မြင်မှု သုည ဖြင့်
ပြီးမြောက်သည်ကို ပြသည့်အခါ၊ အငြိမ်းစားသော့ကို
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 အဖြစ် ပြန်ထားပြီး နောက်လှည့်ပြောင်းမှုတစ်ခု လည်ပတ်ပါ၊
သို့မဟုတ် သော့ အပြီးပျောက်ဆုံးပါက အဖွဲ့အစည်း၏စီမံခန့်ခွဲသူ အထောက်အထား ထပ်ထည့်ခိုင်းပါ–
ထို့နောက် လက်ရှိသော့အောက် တံဆိပ်ခတ်သည်။ မအောင်သောလှည့်ပြောင်းမှုများ ၎င်းတို့၏အမှား
မှတ်တမ်းတွင် ပြသသည်။ အကြောင်းရင်း ပြင်ပြီး ထပ်တောင်းဆိုပါ။
လက်မှတ်ထိုးသော့များ
မာစတာသော့နှင့် သီးခြား– အဖွဲ့အစည်းတစ်ခုစီ ၎င်း၏ OpenID Connect တိုကင်များနှင့်
LTI မက်ဆေ့ချ်များကို ၎င်း၏ကိုယ်ပိုင် RSA သော့ဖြင့် လက်မှတ်ထိုးသည်၊
/.well-known/jwks.json တွင် ထုတ်ဝေလျက်။ ဤနေရာတွင် ဘာမှ အော်ပရေတာ မလိုပါ။
နာရီတိုင်း platform.signing_keys အချိန်ဇယားက လက်ရှိသော့၏ ကိုးဆယ် ပြည့်ရန်
ခုနစ်ရက်အလို ဆက်ခံသူ ထုတ်ဝေသည်၊ တစ်ပတ်အကြာ ဆက်ခံသူ လက်မှတ်ထိုးစတင်ပြီး သော့ဟောင်း
အငြိမ်းစားဖြစ်လာသည်၊ ထို့နောက် ကိုးဆယ်ရက်အကြာ သော့ဟောင်း ဖျက်ခံရပြီး သော့အစုမှ
ထွက်သည်။ အဆင့်တိုင်းက ပလက်ဖောင်းစာရင်းစစ်ကွင်းဆက်တွင်
platform/signing_key_advance ထည့်သွင်းမှုတစ်ခု ဖြစ်သည်။
အဖွဲ့အစည်းတစ်ခု၏သော့ စောစီးစွာ အစားထိုးရန်၊ ဥပမာ ပေါက်ကြားပြီးနောက်–
- ကွန်ဆိုးလ်တွင်– Security၊ Master key၊ Publish a new signing key
(
platform/keys_manageလိုအပ်သည်)။ သို့မဟုတ် - အလုပ်သမား၏ပတ်ဝန်းကျင်ပါသော shell တွင်–
bun run kek:rotate signing-keys rotate --tenant <slug or id> --reason "Key exposed, INC-3310"။bun run kek:rotate signing-keys statusက အဖွဲ့အစည်းတိုင်း၏သော့များ အဆင့်အလိုက် စာရင်းပြုစုသည်။
သော့အသစ်က ချက်ချင်းထုတ်ဝေပြီး ခုနစ်ရက်အကြာ လက်မှတ်ထိုးစတင်သည်၊ လက်ရှိသော့
အငြိမ်းစားသည့်အခါ။ ရက်သတ္တပတ်က တမင်ဖြစ်သည်– အားကိုးပါတီများ သော့အစု သိမ်းထားသည်၊
တိုသောထပ်မှုက ကိရိယာတိုင်း တစ်ပြိုင်နက် မအောင်စေသည်။ အငြိမ်းစားသော့က
ကိုးဆယ်ရက်ထပ် သော့အစုတွင် နေသည်၊ ၎င်းလက်မှတ်ထိုးပြီးသားတိုကင်များ စစ်ဆေးနေစေရန်။
ပေါက်ကြားမှုက ၎င်းကို စောစီးစွာ မယုံကြည်ရတော့ဟု ဆိုလိုပါက၊ ၎င်း၏အတန်းကို
ဖျက်ခြင်းက အော်ပရေတာ၏ကိုယ်ပိုင်ဒေတာဘေ့စ်ဝင်ရောက်မှုဖြင့် ပြောင်းလဲမှုမှတ်တမ်းအောက်၌
ပြုလုပ်သောပြောင်းလဲမှု ဖြစ်သည် (အရေးပေါ်ဝင်ရောက်မှုက ဖတ်ရန်သာ)၊
၎င်းဖြင့်လက်မှတ်ထိုးထားသောတိုကင်များ ထို့နောက် စစ်ဆေးမှု မအောင်ပါ။ အတင်းလှည့်ပြောင်းမှုက
အကြောင်းရင်းနှင့်အတူ စာရင်းစစ်ကွင်းဆက်တွင် platform/signing_key_rotate
ဖြစ်သည်။ အလုပ်သမားက သော့အသစ် ထုပ်ပိုးရန် ဝဘ်အဆင့်နှင့် တူညီသော
QUIRE_MASTER_KEY ဆက်တင်များ လိုအပ်သည်။ မာစတာသော့အတွက် bun run kek:rotate က
လက်မှတ်ထိုးသော့များ အခြားအရာအားလုံးနှင့်အတူ ပြန်ထုပ်ပိုးသည် (oauth_signing_key
က SEALED_STORES တွင် ရှိသည်)။
အရေးပေါ်ထုတ်လုပ်ရေးဝင်ရောက်မှု
မည်သူမှ ထုတ်လုပ်ရေးသို့ အမြဲတမ်းဝင်ရောက်ခွင့် မကိုင်ပါ။ တစ်ခုခု မစောင့်နိုင်သည့်အခါ ပိုင်ရှင်တစ်ဦး အရေးပေါ်ခွင့်ပြုချက် ထုတ်ပေးသည်– Platform console၊ Security၊ Break-glass access။
- ခွင့်ပြုချက်တစ်ခုတွင် နယ်ပယ် (အဖွဲ့အစည်းတစ်ခု၊ သို့မဟုတ် ပလက်ဖောင်းမှတ်ပုံတင်ခြင်း)၊ ဖြစ်ရပ် သို့မဟုတ် လက်မှတ်ကို အမည်ပေးသော အနည်းဆုံး စာလုံး ၂၀ ပါအကြောင်းရင်း၊ ၅ မှ ၂၄၀ မိနစ် ပြတင်းပေါက် ပါရှိသည်။ ၎င်းကိုယ်တိုင် သက်တမ်းကုန်သည်– ထုတ်ပြန်ချက်တိုင်းတွင် နာရီနှင့် တိုက်ဆိုင်စစ်ဆေးသည်။
- ၎င်းကို ထုတ်ပေးသောပိုင်ရှင်ကိုယ်တိုင်၊ သို့မဟုတ် အခြားပိုင်ရှင်တစ်ဦးအား
ထုတ်ပေးနိုင်သည် (လူနှစ်ဦးပုံစံ)။ ထုတ်ပေးခံရသူသာ အသုံးပြုနိုင်သည်။ ထုတ်ပေးရန်
platform/break_glass_issueလိုပြီး အသုံးပြုရန်platform/break_glass_useလိုသည်။ နှစ်ခုစလုံး မူလအတိုင်း ပိုင်ရှင်သီးသန့်။ - ထုတ်ပြန်ချက်များ တံခါးပေါက်မှတစ်ဆင့် လည်ပတ်သည်၊ ဒေတာဘေ့စ်လော့ဂ်အင်တွင် မဟုတ်ပါ– ဖတ်ရန်သာ၊ တစ်ကြိမ်တစ်ခု၊ အဖွဲ့အစည်း သို့မဟုတ် ထိန်းချုပ်မှတ်ပုံတင်ခြင်းတွင် ချုပ်ထားလျက်၊ ငါးစက္ကန့်အချိန်ကုန်နှင့် အများဆုံး အတန်း ၅၀၀။ ဒွိတန်ဖိုးများကို အရွယ်အစားဖြင့် ပြသသည်။
- ပလက်ဖောင်းစာရင်းစစ်ကွင်းဆက်က ထုတ်ပေးမှု (အကြောင်းရင်းနှင့်အတူ)၊ ရုပ်သိမ်းမှု၊
မလည်ပတ်မီ ထုတ်ပြန်ချက်တိုင်း (
platform/break_glass_statement၊ ငြင်းပယ်သူများ ရလဒ်deniedနှင့်) နှင့် ရလဒ်တိုင်း (platform/break_glass_result) မှတ်တမ်းတင်သည်။ops.break_glass_statementက စာရင်းစစ်ထည့်သွင်းမှု id များ ကိုင်သည်၊ ထို့ကြောင့် ထုတ်ပေးမှုမှတ်တမ်း ၎င်း၏စာရင်းစစ်ထည့်သွင်းမှုများနှင့် ဆက်စပ်သည်။ - ရေးမှုများ မပေးပါ။ ထုတ်ဝေမှုကို မစောင့်နိုင်သောပြောင်းလဲမှုက အော်ပရေတာ၏ကိုယ်ပိုင်ဒေတာဘေ့စ်ဝင်ရောက်မှုကို ၎င်း၏ကိုယ်ပိုင်ပြောင်းလဲမှုမှတ်တမ်းအောက်၌၊ ဤထုတ်ကုန်အပြင် အသုံးပြုသည်၊ မှတ်တမ်းက ဤနေရာတွင် အသုံးပြုသောဖြစ်ရပ်ကိုးကား ကိုးကားသင့်သည်။
ဒေတာဘေ့စ်အထောက်အထားများ ဘာကြောင့် မထုတ်ပေးသနည်း– Postgres လော့ဂ်အင်တစ်ခုက ၎င်းကိုတောင်းသော session ထက် အသက်ရှည်သည်၊ အက်ပလီကေးရှင်း အားကိုးသောအတန်းအဆင့်လုံခြုံမှုကို ကျော်လွှားသည်၊ ဤထုတ်ကုန်၏စာရင်းစစ်ကွင်းဆက်သို့ ရေး၍မရပါ၊ ထို့ကြောင့် ၎င်း၏ထုတ်ပြန်ချက်များကို တစ်စုံတစ်ဦး ဆာဗာမှတ်တမ်း ပို့သည့်အထိသာ စာရင်းစစ်မည်။ တံခါးပေါက်က စာရင်းစစ်လမ်းကြောင်းကို ၎င်းပတ်ဝန်းကျင်ရှိ အလေ့အကျင့်ထက် ဝင်ရောက်မှု၏ဂုဏ်သတ္တိတစ်ခု ဖြစ်စေသည်။
စာရင်းစစ်တောင်းဆိုမှုကို ဖြေရန်– ကာလအတွင်းခွင့်ပြုမှုများ စာရင်းပြုစုပါ
(Break-glass access)၊ ၎င်း၏ထုတ်ပြန်ချက်များနှင့် စာရင်းစစ်ထည့်သွင်းမှု id များအတွက်
ခွင့်ပြုမှုတစ်ခု၏မှတ်တမ်း ဖွင့်ပါ၊ ပလက်ဖောင်းစာရင်းစစ်ကွင်းဆက်တွင် ထိုထည့်သွင်းမှုများ
ဖတ်ပါ (bun run audit:verify --platform က ကွင်းဆက် မပျက်ကြောင်း သက်သေပြသည်)။