เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบ™ MySQL: Master Key Rotation

เปƒเบ™เบ„เบงเบฒเบกเบ„เบฒเบ”เบซเบงเบฑเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบซเบผเบฑเบเบชเบนเบ” "เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™" เบžเบงเบเป€เบฎเบปเบฒเบชเบทเบšเบ•เปเปˆเป€เบœเบตเบเปเบœเปˆเบŠเบธเบ”เบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบ™ MySQL.

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปƒเบ™เบŠเบธเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบถเบเบชเบฒเบซเบฒเบฅเบท เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”. เบกเบทเป‰เบ™เบตเป‰, เบญเบตเบ‡เบ•เบฒเบกเบ„เบงเบฒเบกเบฎเบนเป‰เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เบเบฒเบ™เบซเบกเบธเบ™เบ‚เบญเบ‡เบเบฐเปเบˆเบ•เบปเป‰เบ™เบ•เป.

เบเบฒเบ™เบซเบกเบธเบ™เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเปƒเบซเบกเปˆเปเบฅเบฐเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆเบ‚เบญเบ‡เบเบฐเปเบˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡ (เป€เบŠเบดเปˆเบ‡เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ•เบฒเบ•เบฐเบฅเบฒเบ‡) เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆเบ™เบตเป‰.

เบ‚เปเปƒเบซเป‰เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป„เบงเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเปเบ™เบงเปƒเบ”:

เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบ™ MySQL: Master Key Rotation

เบˆเบฒเบเบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเป€เบŠเบตเบšเป€เบงเบตเบญเปˆเบฒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบ–เบทเบเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบˆเบทเปˆเบˆเปเบฒ ID เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบฒเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบกเบต KEYID = 3 เปเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบกเบต KEYID = 4, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ ID เบฅเบฐเบซเบฑเบ”เบชเบนเบ‡เบชเบธเบ”เบˆเบฐเป€เบ›เบฑเบ™ 4. เปƒเบซเป‰เป‚เบ—เบซเบฒเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰ - MAX KEY ID.

เบงเบดเบ—เบตเบเบฒเบ™เบซเบกเบธเบ™เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”

1. เบœเบนเป‰เปƒเบŠเป‰เบ›เบฐเบ•เบดเบšเบฑเบ” ALTER INNODB MASTER KEY.

2. เป€เบŠเบตเบšเป€เบงเบตเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เปƒเบชเปˆเบเบฐเปเบˆเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเปƒเปเปˆเบเบฑเบšเป€เบŠเบตเบšเป€เบงเบต UUID เปเบฅเบฐ KEYID เป€เบ—เบปเปˆเบฒเบเบฑเบšเปœเบถเปˆเบ‡เบšเบงเบ MAXKEYID. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš master key id เป€เบ—เบปเปˆเบฒเบเบฑเบš INNODBเบ„เบต-UUID-(MAXKEYID + 1). เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบชเบณเป€เบฅเบฑเบ”เปเบฅเป‰เบง, MAX KEY ID เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป‚เบ”เบเปœเบถเปˆเบ‡ (เป€เบŠเบฑเปˆเบ™: MAX.KEYID=MAXKEYID + 1).

3. เป€เบŠเบตเบšเป€เบงเบตเบชเบฐเปเบเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป„เบงเป‰เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบ, เปเบฅเบฐเบชเบณเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบžเบทเป‰เบ™เบ—เบตเปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡:

  • encrypts เบเบฐเปเบˆ tablespace เบ”เป‰เบงเบ master key เปƒเบซเบกเปˆ;

  • เบญเบฑเบšเป€เบ”เบ”เบฅเบฐเบซเบฑเบ”เบฅเบฐเบซเบฑเบ”เป€เบ›เบฑเบ™ MAX เปƒเปเปˆKEYID;

  • เบ–เป‰เบฒ UUID เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบ UUID เป€เบŠเบตเบšเป€เบงเบต, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบซเป‰เบญเบฑเบšเป€เบ”เบ”เป€เบŠเบตเบšเป€เบงเบต UUID.

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰, Master Key ID เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ UUID เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบญเปˆเบฒเบ™เบˆเบฒเบเบชเปˆเบงเบ™เบซเบปเบงเบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบชเปˆเบงเบ™เบซเบปเบงเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบžเบทเปˆเบญเปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบ—เบตเปˆเบ–เบทเบเบ•เป‰เบญเบ‡.

เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบทเป‰เบ™เบ—เบตเปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบˆเบฒเบเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบ‚เบปเบฒเบญเบฒเบ”เบˆเบฐเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบ—เบฑเบ‡เปเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบ”เบถเบ‡เบกเบฒเบˆเบฒเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เป€เบกเบทเปˆเบญเป€เบŠเบตเบšเป€เบงเบตเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบญเบฑเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เป€เบŠเบตเบšเป€เบงเบตเบŠเป‰เบฒเบฅเบปเบ‡, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เป‰เบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบ„เบตเบ‚เป‰เบฒเบ‡เป€เบŠเบตเบšเป€เบงเบตเบ–เบทเบเปƒเบŠเป‰. เบ”เป‰เบงเบเบเบฒเบ™เปเบธเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบ, เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เบทเบ™เปƒเปเปˆเบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบญเบฑเบ™เบ”เบฝเบงเบ—เบตเปˆเบ„เบทเบเบฑเบ™เบชเบณเบฅเบฑเบšเบ—เบธเบเบžเบทเป‰เบ™เบ—เบตเปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡. เบ•เบญเบ™เบ™เบตเป‰เป€เบŠเบตเบšเป€เบงเบตเบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบญเบฑเบ™เบ”เบฝเบงเปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.

เบ™เบตเป‰, เปเบ™เปˆเบ™เบญเบ™, เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบœเบปเบ™เบ‚เป‰เบฒเบ‡เบ„เบฝเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบžเปเปƒเบˆ. เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เบซเบกเบธเบ™เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบซเบผเบฒเบเบ‚เบถเป‰เบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบฅเบฐเบซเบฑเบ”เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ–เบทเบเบฅเบฑเบเบˆเบฒเบเบซเป‰เบญเบ‡เป‚เบ–เบ‡ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบˆเบฒเบ Vault Server), เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเปเบฅเบฐเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆเบ‚เบญเบ‡เบเบฐเปเบˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ–เบทเบเบฅเบฑเบเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบ›เบญเบ”เป„เบž ... เป€เบเบทเบญเบš.

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบกเบทเปˆเบญเบเบฐเปเบˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ–เบทเบเบฅเบฑเบ, เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบกเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบกเบนเบ™. เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบงเปˆเบฒเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปเบœเปˆเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ–เป‰เบฒเบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบ–เบทเบเบฅเบฑเบ เปเบฅเบฐเป€เบˆเบปเป‰เบฒเบกเบตเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป„เบงเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบ—เบตเปˆเบ–เบทเบเบฅเบฑเบเป€เบžเบทเปˆเบญเบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบฅเบฐเบซเบฑเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ เปเบฅเบฐเป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เป„เบงเป‰. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เบเบฒเบ™เบซเบกเบธเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบšเปเปˆเป„เบ”เป‰เบŠเปˆเบงเบเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบเบฐโ€‹เปเบˆ tablespace เบ”เป‰เบงเบโ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เปเบกเปˆโ€‹เบšเบปเบ”โ€‹เปƒเปเปˆ, เปเบ•เปˆโ€‹เบเบฐโ€‹เปเบˆโ€‹เบ•เบปเบงโ€‹เบˆเบดเบ‡โ€‹เบ—เบตเปˆโ€‹เปƒเบŠเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบฅเบฐโ€‹เบซเบฑเบ”/เบ–เบญเบ”โ€‹เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบเบฑเบ‡โ€‹เบ„เบทโ€‹เป€เบเบปเปˆเบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, "เปเบฎเบเป€เบเบต" เบชเบฒเบกเบฒเบ”เบชเบทเบšเบ•เปเปˆเปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบ‚เปเป‰เบกเบนเบ™. เบเปˆเบญเบ™โ€‹เปœเป‰เบฒโ€‹เบ™เบตเป‰โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบŠเบตเป‰โ€‹เปเบˆเบ‡โ€‹เบงเปˆเบฒ เป€เบŠเบตเบšเป€เบงเบต Percona เบชเปเบฒเบฅเบฑเบš MySQL เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ„เบทเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ tablespace เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡, เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบฅเบฐเบซเบฑเบ” tablespace เบ‡เปˆเบฒเบเบ”เบฒเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบซเบปเบงเบ‚เปเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบซเบ™เป‰เบฒเบ—เบตเปˆเบ™เบตเป‰เปเบกเปˆเบ™เบเบฑเบ‡เบ—เบปเบ”เบฅเบญเบ‡เบขเบนเปˆเปƒเบ™เบ‚เบฐเบ™เบฐเบ™เบตเป‰.

เบเบฒเบ™เปเบธเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบกเบทเปˆเบญเบฅเบฐเบซเบฑเบ”เบซเบผเบฑเบเบ–เบทเบเบฅเบฑเบ, เปเบ•เปˆเบšเปเปˆเบกเบตเบ—เบฒเบ‡เบ—เบตเปˆเบœเบนเป‰เป‚เบˆเบกเบ•เบตเบˆเบฐเปƒเบŠเป‰เบกเบฑเบ™ เปเบฅเบฐเบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบ›เบธเปˆเบกเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป„เบ”เป‰.

เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเปเบฒเบฅเบฑเบšเบšเบปเบ”เบฎเบฝเบ™เบเบฒเบ™เบชเบฒเบ—เบดเบ”เบŸเบฃเบต.

เบญเปˆเบฒเบ™โ€‹เบ•เบทเปˆเบก:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com