Կոդավորումը MySQL-ում. Հիմնական բանալիների ռոտացիա

Դասընթացի համար նոր գրանցման մեկնարկի ակնկալիքով «Տվյալների բազա» մենք շարունակում ենք հրապարակել MySQL-ում գաղտնագրման մասին հոդվածների շարքը:

Այս շարքի նախորդ հոդվածում մենք քննարկեցինք ինչպես է աշխատում հիմնական բանալիների կոդավորումը. Այսօր, հիմնվելով ավելի վաղ ձեռք բերված գիտելիքների վրա, եկեք դիտարկենք հիմնական բանալիների պտույտը:

Հիմնական բանալիների ռոտացիան ներառում է նոր հիմնական բանալի գեներացում և սեղանի տարածության ստեղների վերակոդավորումը (որոնք պահվում են սեղանի տարածքի վերնագրերում) այս նոր բանալիով:

Եկեք հիշենք, թե ինչ տեսք ունի գաղտնագրված աղյուսակի վերնագիրը.

Կոդավորումը MySQL-ում. Հիմնական բանալիների ռոտացիա

Նախորդ հոդվածից մենք գիտենք, որ սերվերը գործարկման ժամանակ կարդում է բոլոր գաղտնագրված սեղանների վերնագրերը և հիշում ամենամեծ 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» ստեղնը նոր գլխավոր բանալիով, սակայն տվյալների գաղտնագրման/գաղտնազերծման համար օգտագործվող իրական բանալին մնում է նույնը: Հետեւաբար, «հակերը» կարող է շարունակել օգտագործել այն՝ տվյալների վերծանման համար։ Ավելի վաղ ես դա ակնարկել էի Percona սերվեր MySQL-ի համար կարող է իրական սեղանի տարածքի վերագաղտնագրում կատարել, այլ ոչ թե պարզապես սեղանի տարածության բանալիների վերագաղտնագրում: Այս հատկությունը կոչվում է գաղտնագրման թելեր: Այնուամենայնիվ, այս ֆունկցիոնալությունը դեռ փորձնական է այս պահին:

Հիմնական բանալիների ռոտացիան օգտակար է, երբ հիմնական բանալին գողանում են, բայց հարձակվողի համար ոչ մի միջոց չկա այն օգտագործելու և սեղանի տարածքի ստեղները վերծանելու համար:

Գրանցվեք անվճար ցուցադրական դասի համար:

Կարդալ ավելին:

Source: www.habr.com