Դասընթացի համար նոր գրանցման մեկնարկի ակնկալիքով
Այս շարքի նախորդ հոդվածում մենք քննարկեցինք
Հիմնական բանալիների ռոտացիան ներառում է նոր հիմնական բանալի գեներացում և սեղանի տարածության ստեղների վերակոդավորումը (որոնք պահվում են սեղանի տարածքի վերնագրերում) այս նոր բանալիով:
Եկեք հիշենք, թե ինչ տեսք ունի գաղտնագրված աղյուսակի վերնագիրը.
Նախորդ հոդվածից մենք գիտենք, որ սերվերը գործարկման ժամանակ կարդում է բոլոր գաղտնագրված սեղանների վերնագրերը և հիշում ամենամեծ KEY ID-ն: Օրինակ, եթե մենք ունենք երեք աղյուսակ KEY-ովID = 3 և մեկ աղյուսակ BEY-ովID = 4, ապա բանալու առավելագույն ID-ն կլինի 4: Եկեք այս KEY ID-ն անվանենք - MAX KEY ID:
Ինչպես է աշխատում հիմնական բանալիների ռոտացիան
1. Օգտագործողը կատարում է ALTER INNODB MASTER KEY-ը:
2. Սերվերը պահանջում է ստեղնաշարից՝ սերվերի UUID-ի և KEY-ի հետ նոր հիմնական բանալի ստեղծելու համարID հավասար է մեկ գումարած MAXKEYID. Այսպիսով, մենք ստանում ենք հիմնական բանալի id հավասար INNODB-ինKEY-UUID- (MAXKEYID + 1): Հիմնական բանալի հաջող ստեղծման դեպքում MAX KEY ID-ն ավելանում է մեկով (այսինքն՝ MAXKEYID=MAXKEYID + 1):
3. Սերվերը սկանավորում է հիմնական բանալիով ծածկագրված սեղանի բոլոր տարածքները, և յուրաքանչյուր սեղանի համար.
-
կոդավորում է սեղանի տարածության բանալին նոր գլխավոր բանալիով;
-
թարմացնում է բանալու ID-ն նոր MAX-ինKEYՆույնականացում
-
եթե UUID-ը տարբերվում է սերվերի UUID-ից, ապա թարմացրեք սերվերի UUID-ը:
Ինչպես գիտենք, աղյուսակը վերծանելու համար օգտագործվող Master Key ID-ն բաղկացած է UUID-ից և KEY ID-ից, որոնք կարդացվում են սեղանի տարածության վերնագրից: Այն, ինչ մենք հիմա անում ենք, այս տեղեկատվությունը թարմացնում է սեղանի տարածության կոդավորման վերնագրում, որպեսզի սերվերը ստանա ճիշտ հիմնական բանալին:
Եթե մենք ունենք սեղանի տարածքներ տարբեր վայրերից, օրինակ՝ տարբեր կրկնօրինակներ, ապա դրանք կարող են օգտագործել տարբեր հիմնական բանալիներ: Այս բոլոր հիմնական բանալիները պետք է ետ բերվեն պահոցից, երբ սերվերը գործարկվի: Սա կարող է դանդաղեցնել սերվերի գործարկումը, հատկապես, եթե օգտագործվում է սերվերի կողմից բանալիների պահեստ: Հիմնական ստեղնաշարի ռոտացիայի միջոցով մենք նորից կոդավորում ենք սեղանի տարածքի ստեղները մեկ հիմնական բանալիով, որը նույնն է բոլոր սեղանների համար: Այժմ սերվերը պետք է ստանա միայն մեկ հիմնական բանալի գործարկման ժամանակ:
Սա, իհարկե, պարզապես հաճելի կողմնակի ազդեցություն է։ Հիմնական բանալիների ռոտացիայի հիմնական նպատակը մեր սերվերն ավելի անվտանգ դարձնելն է: Այն դեպքում, երբ հիմնական բանալին ինչ-որ կերպ գողացվել է պահոցից (օրինակ, Vault Server-ից), հնարավոր է ստեղծել նոր գլխավոր բանալի և վերակոդավորել սեղանի տարածքի ստեղները՝ անվավեր դարձնելով գողացված բանալին: Մենք ապահով ենք...գրեթե:
Նախորդ հոդվածում ես խոսեցի այն մասին, թե ինչպես է սեղանի տարածքի բանալին գողացվելուց հետո, երրորդ կողմը կարող է այն օգտագործել տվյալների վերծանման համար: Պայմանով, որ կա մուտք դեպի մեր սկավառակ: Եթե հիմնական բանալին գողացված է, և դուք մուտք ունեք գաղտնագրված տվյալներին, կարող եք օգտագործել գողացված հիմնական բանալին՝ սեղանի տարածության բանալին վերծանելու և վերծանված տվյալները ստանալու համար: Ինչպես տեսնում եք, գլխավոր ստեղնի պտույտը այս դեպքում չի օգնում։ Մենք նորից կոդավորում ենք «tablespace» ստեղնը նոր գլխավոր բանալիով, սակայն տվյալների գաղտնագրման/գաղտնազերծման համար օգտագործվող իրական բանալին մնում է նույնը: Հետեւաբար, «հակերը» կարող է շարունակել օգտագործել այն՝ տվյալների վերծանման համար։ Ավելի վաղ ես դա ակնարկել էի
Հիմնական բանալիների ռոտացիան օգտակար է, երբ հիմնական բանալին գողանում են, բայց հարձակվողի համար ոչ մի միջոց չկա այն օգտագործելու և սեղանի տարածքի ստեղները վերծանելու համար:
Կարդալ ավելին:
Source: www.habr.com