αα
αααα»αααΆαααααΉααα»αααααΆαα
αΆααααααΎαααααΆαα
α»ααααααααααΈαααααΆαααααααα·ααααΆ
ααΆαα’αα·αααααΈααα·αααααααααααΆααΆα (TDE) ααΆααααα αΆααααα½ααα
αααα»α
αα MySQL
Keyring ααΊααΆαααααα·ααΈαααα½ααααα’αα»ααααΆαα±αααααΆαααΈααααα½α αααααΎα αα·ααα»ααααα αααα»αα―αααΆαααΌαααααΆα (keyring_file) α¬αα ααΎαααΆαααΈαααααΈα ααααΆα (ααΌα ααΆ HashiCorp Vault)α αααααααααααΌαααΆααα»ααααα»αααααΆαααααααΆαα ααΎααααΈαααααΎαααααΏαααααΆαααΆααααααααα½αααα
αααααα·ααΈαααα½αα’αΆα αααα ααααΆααΈαααααααα
- ααΆααααα»ααααα»ααααα»αα α§ααΆα ααα α―αααΆαβααΌαααααΆα (ααΎαβα α βααΆβααΆβα―αααΆαβαααβααΆαβααΌαααααΆαβααΎβααΌααα)α
- α§ααααααααα»αααΈα ααααΆαα α§ααΆα ααα Vault Server (ααΎαα α ααΆααΆααΆ server-based keyring)α
ααΆαααααααααααΊααΆαααΆααααααΆααααααααααααααααααααααΆααααΆααααα»αααΆαα₯αα·ααΆαααα»αααααΆααααα·α ααααα½α αα·αααααΉααααα ααααααααΆαα»α αα·αααΆαααααααα»ααααααα ααα»αααααα αααααααΎαααΆααα½αααΆαααααα
αα αααααααΎαααααααααα»αα―αααΆα αα αααα αΆααααααΎα ααΆαα·ααΆααΆααααΌααααααααααααα»αααααΌαααΆααααα»ααα αααα»αααααΆαααααααΆααα ααααααααΆαααααααΉα α’αααααααΎααααΆαααααααΉα αααααααα αα·αααΌααααααα½αα―αα
αααα»αααααΈα αΆααααααΆαααΌαααααΆαααΎαααΆαααΈααα (ααΌα ααΆ Vault Server) ααΆαααααααααααΆααααΌααα αα·αα’αααααααΎααααΆαααααααΉαααα»ααααααααααααΌαααΆααααα»ααα αααα αΆααααααΎα ααΌα ααααααΆαααα½αααΆαααΌαααααΆααα’αααα·ααααααααααΏαααααΆαα αΆααααααΎααααααα ααααααΌαααΆααααα»αααααααα·αα αααααΊ αααααα½αααΆααααΌαααΆααααα»αααΈ Vault αααα ααααααααΆααααΌαααΆααα·αααααΆααα αα αααααΆααααα½α ααααααΌααααααΆαα»ααααα»αα’αααα αα αΆα ααΌα ααααααΆαα·αα αΆαααΆα αα αΌαααααΎααΆααααααΆαααααΆαα TLS αα ααΆαα Vault Server ααΆαααα’ααΆααα αααααΆααααααΎααα·αα·αααααΎαααΆααΎααααααΆαα’αααΈαααααααααΆαααααααΆααα αααα»αααααΆαααααααΉαα
ααααααΆαααααΆαααααΆαααΌα ααΆααααααα
- ααααααααΆαααααααΉα - ααΆααααααα’ααααααααΆαααααΆααα α§ααΆα αααα
INNODBKey-764d382a-7324-11e9-ad8f-9cb6d0d5dc99-1
- αααααααααααΉα - ααααααααααΆααα α»α ααα’ααααΎαααα½ααααααααΆαααΆαα’αα·αααααΈααααααΆαααααΎ ααααααααα’αΆα ααααΎααΆαα βAESβ, βRSAβ α¬ βDSAβ α
- ααααααααΌααα - αααααααααααΉααα·αααΆαα AESα 16, 24 α¬ 32, RSA 128, 256, 512 αα·α DSA 128, 256 α¬ 384 α
- α’αααβααααΎ - ααα αΆααααα ααααα·αααΎααααΆαααααααα α§ααΆα ααα Master Key αααααΆααααααΊαααα ααααα·αααΎααααααΌαααΆααααααΎααααααααΎ keyring_udf αααααΆαααααααααα’ααααααααΆαααα αΆααααα
- αααααΉααααα½αα―α
ααααααΌαααΆααααααα’ααααααααΆααααααΌα key_id α’αααααααΎααααΆααα
ααΆααααΆαααΆααα»αααααΆαααα»αααΆααααααΆαα»α αα·ααα»ααααααααα
ααΆααααα»αα―αααΆαααΆααααααΏαα α’αααβαααα ααβααΆβαα·αβααΆβααααΆααβαααααΆααβααΊβααααΆααβααβαααααβααΌαααβαα βα―αααΆαβααβαααα ααα»ααααβα’ααβαα ααΆβααΆαβα αααΎαβαααβαα βααΈαααα αα αααααΆαααααΆαααααααααΆααααα»αα―αααΆαααααΌαααΆαααααΎα‘αΎα α αααΆααα ααααααααα»ααα»αααααΆαα·ααΆααΆααα’ααααααΌαααΆααααααΎαααααΌαα α αΌααα·ααΆαααΆα―αααΆααααααααΌαααΆαααα α ααΆ my_biggest_secrets αααααΆααααα αααΆααα ααααααααα»ααα»αααΉαααααΆαααΆ my_biggest_secrets.backup α αααααΆαααα ααααΆαααααααΆααααααΌαααΆαααααΆααααααΌα (ααααΆααα α»α ααααΌαααΆααααααα α¬αα»α) α αΎαααααα·αααΎα’αααΈαααΆααα’ααααα½αααΆααααααα ααααΆαααααααΆααααααΌαααΆααααααα‘αΎααα·αααΆα―αααΆαα αααα»αααααΈαααααα ααΌα ααΆαααΆαααΈααααααΆααα α’αααα’αΆα ααΎαα―αααΆαααααα»ααα»ααααα α―αααΆαααααα»ααα»αααααΌαααΆααα»ααα ααααααααΆαααααααααααΌαααΆααααα»α (ααΆααααααΆαααααΆααααΈαααΆαααΈαααααααΌαααΆαα αΆααααααΎαα‘αΎααα·α)α
αα ααααααααΆαα»α α¬αα»ααααα αααα»ααααΆαααΈααα ααΆααααα»αααααΌαααααααΆαααα αααΆαααΈααα MySQL αααααααΎααΆααααααααΆ "ααααΎαα" / "ααααΎαα»αααΆααα»ααα" α
α αΌαααΎααααααααα ααααΏαα αΆααααααΎααααΆαααΈααααα·αα ααααααααΈααΎααΆααα·ααααααΆααααΏαααααΆαααΎαααααΎαααΆαααααΌαααΆααααααΆααααααα»αααααααααα½αα―α ααΆααααΆααααα αΆαααααα’αααΈα ααα½αααααΈαα»ααααααααααΌαααΆαααΎααααΈαααα αααα αΆααααααΎαα ααΆααΆααα·αααΆαα αααααΆαααΆααααααΆααααΆαα·ααααααααΆααααΆααααα»ααααΆαααΈαααα αα αααα αΆααααααΎα αααΆαααΈααααα·αα·αααααΎαααΆααΎαααα½αααΆαααααααΌαααΆααααααΆααααΆααΆα/α αααααααΆααΆααααααΆαα’αα·αααααΈα α αΎαααααΎαα»αααααΈαααααααααα»αα αα ααΎαααΆαααΈααα "ααα’αΆα" ααΆαα½αααΉαααΆαα’αα·αααααΈα Master Key ααααΌαααααΆα Master Key αα½α αααααααΌαααααΆαααααΈαααααααααα»αα ααααααΆαααΆααααα αααα½αα ααα½αααα’αΆα ααααΌαααΆαααΆαααΆα ααΆα§ααΆα ααα αα αααααααααΆαααΈαααααααα»ααα»ααααα»αααααΆαααΆαααααα»ααα»αααΈαααΆαααΈαααα ααααα αααα»αααααΈαααααα ααΆαααααα·α Master Key αα½αααααααΌαααΆααααααααΌαα ααΆααΉαααααΌαααΆααααααΆαααααα’α·αααααααααααα αααα»αα’αααααααΆαααααΆααα»α αααααΈααΆαα ααΈααααααα»αα ααααααααααΆααααΆαααΆαααΈααααααααααΎ Master Keys α αααΎαα’αΆα α αααΆααααααΌαααααα·α ααΎααααΈα αΆααααααΎα ααΆαα·ααααα αααααααΎααααΆαααααααΆαααααααααΆααααΆαααΈαααα
α₯α‘αΌααααααΌααα·ααΆααααααααααα’αααΈ keyring_file α αα ααααααα»ααααα»ααααααΎα keyring_file αααα»αααααΆαααΆααααα½αααΆααααα’αααΈαααααα·αα·αααααΎαααΆαααααΆααααααΌα keyring_file ααααααααααααΆαααΈααααααα»αααααΎαααΆαα αα αααα»α 5.7 ααΆααααα½ααα·αα·αααααααΌαααΆαα’αα»αααααααααα’ααααΎαααα·αα·α―αααΆαααααα·ααααααΆαααααααααΆαααααα’α αΎααα αααα»α 8.0 ααΆααααΌαααΆααααα½αααα checksum SHA256 α
ααΎαααααΌααααα’αααααααΎαααΆα keyring_file αααα·αα·α―αααΆα αα·α checksum ααααΌαααΆαααααΆ αααααααΌαααΆαα αα αΆαααααααΆαααΈααα α αΎαααΆαααααΆααααααΌαααααΌαααΆαα’αα»αααααα»αααααΆαααα½αααΆααααΌαααααΆα αα αααα―αααΆαααααΆααααααΌα ααΌααααααΆααααααααααΌαααΆαααααΎαα αα α»ααααααααΆαα
ααΎαααΆααααααααααααααα½αααΆα αααΎαα’αααΈαα»αααααααΆααααα½α α αΎαα ααααααΆαααΆααααα ααΆααααααΆαααααααΆαααα½αααααααααΆααΏααααααΌαααΆαααααααα α αα α¬ααΆαααΆααααα ααα‘αα ααΆαα αααααααααααα ααΎαααΆαααΈαααα
ααΎαααα»αααΆαααααααΆαααΆ? αααΆαααΈαααααΈαα½αα (α§ααΆα ααα αααΆαααΈααα Percona) αα αααα»αα αααααααααΌαααααΆαααΈααΆααααΆα ααααα‘αααα ααΎ Vault Server ααα Percona Server ααααΌααααααααΆαα»αααααααααΆα Master Key ααΈαα½αααααααΆααααααΆαα»ααααα»αααΆααααα»αααΆα GUID αααααααΆαααΈααα Percona αα αααα»αααΆααααααα’ααααααααΆαααααααΆα α ααα»α’αααΈααΆαααΆααΆααααΆαα? αααααααΆα’αααααΆα Vault Server αααα½α α αΎα Percona Servers ααΆααα’αααα αααα»α cluster ααααΎ Vault Server αααα½ααααα αααα αΆα αΆααααΌα ααΆα αααΆααα ααααα·αααΎαααΆαααΈααα Percona ααΆααα’ααααΆαααααΎ Master Key αααααααΆαα§ααααααααααα’ααααααααΆααααα½αααα ααΌα ααΆ id = 1, id = 2 ααα ααααααΆαααΈαααααΆααα’αααα αααα»αα αααααααΉαααααΎ Master Key ααΌα ααααΆα α’αααΈααα GUID αααααα±ααααΊααΆααα»αααααΆαααΆααααΆαααΈαααα α ααα»α’αααΈααΆαααΆααααΌααα·ααΆαα’αααΈααΆαα ααααααααααααΆααααΆαααΈααα ααααα·αααΎ GUID αααα½ααααααΆααα½α α αΎα? ααΆααααααα·ααΈαααα½ααα½αααα - keyring_udf α ααΆαα½αααΉααααααα·ααΈαααα½αααα α’αααααααΎααααΆαααααΆαααΈαααααααα’αααα’αΆα αααααΆαα»ααααααααα½ααααα ααΎαααΆαααΈααα Vault α αααα αΆααΎαα‘αΎααα ααααααα’αααααααΎαααααΎαααΌααααα ααΎ server1 ααΆα§ααΆα ααα α αΎααααααΆααααααααΆααΆααααααΎαααΌααααααααΆαααααααααΆααααΌα ααααΆαα ααΎ server2 α§ααΆα αααα
--server1:
select keyring_key_store('ROB_1','AES',"123456789012345");
1
--1 Π·Π½Π°ΡΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅
--server2:
select keyring_key_store('ROB_1','AES',"543210987654321");
1
αααα αΆαα αααΆαααΈαααααΆααααΈααααα»αααααΎ Vault Server ααΌα ααααΆ ααΎαα»αααΆα keyring_key_store αααΆααααα ααΎ server2 ααααα? αα½αα±ααα αΆααα’αΆαααααα ααααα·αααΎα’αααααααΆααΆαααααΎααΌα ααααΆαα ααΎαααΆαααΈααααα½α α’αααααΉαααα½αααΆαααα α»ααα½αα
--server1:
select keyring_key_store('ROB_1','AES',"123456789012345");
1
select keyring_key_store('ROB_1','AES',"543210987654321");
0
ααααΌαα αΎα ROB_1 ααΆααα½α α αΎαα
α αΌααα·ααΆααααΆα§ααΆα αααααΈααΈαααΆαα»ααα·αα ααΌα αααααΎαααΆααα·ααΆααα»αααα keyring_vault α¬αααααα·ααΈαααα½α keyring αααααααααααααΆαα»αααααααααΆαααααααΉαααΆααα’αααα αααα»αα’αααα αα αΆαα ααΌα αααααααααΆααααΈαααααΎαααΌαααααααΈ ROB_1 ααααΌαααΆααααααααα server1 α αΎαααααααααΈααΎααΆαααααΎααΌαααααααα Vault ααααααααΌαααΆααααααααα αααα»αααααΆαααααααΆαααααααα α₯α‘αΌαααα αα ααααααααΎαααααΆααΆαααααααααΌαααααΌα ααααΆααΆααΎαααΈααΈα keyring_vault αα·αα·αααααΎαααΆααΎααααΆααα αααα»αααααΆαααααααΆαα α αΎααααααα α»αα
αααα»αααααΈααααΌαααααΆαααΆαααΊαα»αααααΆα Server1 αα·α server2 ααΆαααααΆαααααααΆααααΆα ααααα‘ααα αααααΆααααΈαααααα ROB_1 αα αααα»αααααΆαααααααΆααααααΆαααα ααΎ server1 αα·α Vault server ααααΆαααααααΆααααααΆαααα ααΎ server2 ααΊαα·αααααΆαααααααα αα·αααΆααα ROB_2 αα αααα»αααααΆαααααααΆαααα ααΎ server1 ααα ααΌα αααα αα ROB_1 ααααΌαααΆαααααααα keyring_key_store αα·ααα αααΆαααΈααα Vault ααααα·αααΆαααααααΆααααΎ (!) αααααααΈαα»αα α₯α‘αΌαααααα ROB_1 αα ααΎαααΆαααΈααα Vault ααΊ 543210987654321α αα½αα±ααα αΆααα’αΆαααααα αααΆαααΈααα Vault αα·ααααααααΆαααααααααΆααααααααα α αΎαααΆααααα½ααααααααΆααααΎαααααα αΆααα
α₯α‘αΌααααααΎαα’αΆα ααΉαααΆα ααα»α’αααΈααΆαααΆααΆααααα αααααΆαααΈααααα αααα»α Vault α’αΆα ααΆαααΆααααααΆαα - αα αααα’ααααααα»αααααΎ keyring_udf α αΎαα αααααααΆαα»αααΌααααα αααα»α Vault α ααΎααααΎααΌα ααααα ααΎααααΈαααααα ααΆαααΌαααΆααααααααααα ααΎαααΆαααΈααα Vault?
ααΆααα·ααΈααΈααααΆααααα»αααΆααααα αααα αααα»α Vault α α’αααα’αΆα αααααΎαα ααα»α αααααααααααααΆαααααΆαααααΆαααΈαααααΈαα½αα α¬ααααΎααααΌααααααααααΆαα αααα»αα ααα»α αααααααα½αα αααααααΌαααΆααααα αΆααααΆαααα’αααα»αααΆαα½αααΉαα§ααΆα αααα ααΌα ααααααΌααααα‘ααααΎαα ααα»α ααααααΈαα½ααααΆαα»ααα·αα
--server1:
vault_url = http://127.0.0.1:8200
secret_mount_point = server1_mount
token = (...)
vault_ca = (...)
--server2:
vault_url = http://127.0.0.1:8200
secret_mount_point = sever2_mount
token = (...)
vault_ca = (...)
αα ααΈαααα’αααα’αΆα ααΎαααΎαααΆ server1 αα·α server2 αααα»αααααΎα ααα»α αααααααααααααΆα αα ααααααααααααΌα ααΆααααααααΉαααΎααα ααΌα αααα
--server1:
vault_url = http://127.0.0.1:8200
secret_mount_point = mount_point/server1
token = (...)
vault_ca = (...)
--server2:
vault_url = http://127.0.0.1:8200
secret_mount_point = mount_point/sever2
token = (...)
vault_ca = (...)
αααα»αααααΈααα αααΆαααΈαααααΆααααΈαααααΎα ααα»α ααααααΌα ααααΆ "mount_point" ααα»ααααααααΌααα»αααααΆα αα αααα’ααααααααΎαααΆααααααΆααααααΌααα ααΎ server1 αααααααΎααααΌαααα Vault server ααΉααααααΎααα "server1" αααααααααααααααα·α αααααΆαα server2 α’αααΈαααΊααααααααααΆα αα αααα’ααααα»αααΆααααααΆααα α»αααααααα αααα»α mount_point/server1 α¬ mount_point/server2 αααΆαααΈααα Vault αααα»αααααΆααααααααααα αααα»αβααααΈβαααβα’αααβααααΎβααΆαβαααααβααααΌα α’αααβααααΌαβααβαααααΎαβα ααα»α βααααβαα½αβααα»ααααα α αΎαβααααΆααααααΌαβα―αααΆαβαααααβαα ααΆααααααααβααΌα ααααβαααΆαααΈαααβααααΎβααααΌαβααΆα αβαααβα‘ααα α ααα»α ααααα’αΆα ααααΌαααΆααααααΎααααααααΎααααΎ HTTP α αααααααΎ CURL αααα’αΆα ααααΌαααΆαααααΎααΌα ααα:
curl -L -H "X-Vault-Token: TOKEN" βcacert VAULT_CA
--data '{"type":"generic"}' --request POST VAULT_URL/v1/sys/mounts/SECRET_MOUNT_POINT
ααΆαααΆααα’αα (TOKEN, VAULT_CA, VAULT_URL, SECRET_MOUNT_POINT) ααααΌαααααΆαα ααΉααααΆαααΆααααααααα―αααΆαααααααα ααΆααααααααα ααΆααΆααα·αααΆαα α’αααα’αΆα ααααΎα§αααααααααΎααααΆαα Vault ααΎααααΈααααΎααΌα ααααΆα ααα»ααααααΆααΆααααααΆααααα½ααααα»αααΆααααααΎαα ααα»α αααααααααααααααααααα·α αααα»ααααααΉαααΆα’αααααααΎαααααααΆααααααΆααααααααα α αΎαααΎαααΉαααΎαα’ααααα αααα»αα’ααααααααααΆαααα αααα»ααααααΈαααα
α’αΆαβαααααα:
ααααα: www.habr.com