MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Mã hóa sao lưu cơ sở dữ liệu - Các phương pháp hay nhất

Bộ nhớ dự phòng bên ngoài phải là một phần quan trọng trong kế hoạch khắc phục thảm họa của bất kỳ tổ chức nào. Khả năng lưu trữ dữ liệu ở một vị trí vật lý riêng biệt, nơi dữ liệu có thể tồn tại sau một sự kiện thảm khốc phá hủy tất cả dữ liệu trong trung tâm dữ liệu chính của bạn, đảm bảo dữ liệu của bạn tồn tại và liên tục trong tổ chức của bạn. Dịch vụ lưu trữ đám mây là một phương pháp khá tốt để lưu trữ các bản sao lưu ngoại vi. Bất kể bạn đang sử dụng nhà cung cấp dịch vụ đám mây hay bạn chỉ đang sao chép dữ liệu vào trung tâm dữ liệu bên ngoài, mã hóa sao lưu là điều bắt buộc trong những trường hợp như vậy. Trong một trong những blog trước đây của chúng tôi, chúng tôi đã thảo luận về một số phương pháp mã hóa các bản sao lưu của bạn. Hôm nay chúng ta sẽ tập trung vào một số phương pháp hay nhất về mã hóa sao lưu.

Đảm bảo rằng Bí mật của bạn được an toàn

Để mã hóa và giải mã dữ liệu của bạn, bạn phải sử dụng một số loại mật khẩu hoặc khóa. Tùy thuộc vào phương pháp mã hóa (đối xứng hoặc không đối xứng), nó có thể là một bí mật cho cả mã hóa và giải mã hoặc nó có thể là khóa công khai để mã hóa và khóa riêng để giải mã. Điều quan trọng, bạn nên giữ những an toàn. Nếu bạn tình cờ sử dụng mã hóa không đối xứng, bạn nên tập trung vào khóa riêng tư, khóa bạn sẽ sử dụng để giải mã các bản sao lưu.

Bạn có thể lưu trữ khóa trong hệ thống quản lý khóa hoặc kho tiền - có rất nhiều tùy chọn trên thị trường để bạn lựa chọn như Amazon’s KMS hoặc Hashicorp’s Vault. Ngay cả khi bạn quyết định không sử dụng các giải pháp đó, bạn vẫn nên áp dụng các phương pháp bảo mật chung như để đảm bảo rằng chỉ những người dùng chính xác mới có thể truy cập vào khóa và mật khẩu của bạn. Bạn cũng nên xem xét việc chuẩn bị các tập lệnh sao lưu của mình theo cách mà bạn sẽ không để lộ khóa hoặc mật khẩu trong danh sách các quy trình đang chạy. Tốt nhất, hãy đưa chúng vào tệp thay vì chuyển chúng làm đối số cho một số lệnh.

Xem xét mã hóa không đối xứng

Sự khác biệt chính giữa mã hóa đối xứng và không đối xứng là trong khi sử dụng mã hóa đối xứng cho cả mã hóa và giải mã, bạn sử dụng một khóa hoặc mật khẩu duy nhất. Điều này yêu cầu các tiêu chuẩn bảo mật cao hơn ở cả hai đầu của quy trình. Bạn phải đảm bảo rằng máy chủ lưu trữ mà bạn mã hóa dữ liệu rất an toàn vì việc rò rỉ khóa mã hóa đối xứng sẽ cho phép truy cập vào tất cả các bản sao lưu đã mã hóa của bạn.

Mặt khác, nếu bạn sử dụng mã hóa không đối xứng, bạn có hai khóa:khóa công khai để mã hóa dữ liệu và khóa riêng tư để giải mã. Điều này làm cho mọi thứ dễ dàng hơn rất nhiều - bạn không thực sự phải quan tâm đến khóa công khai. Ngay cả khi nó bị xâm phạm, nó vẫn sẽ không cho phép bất kỳ loại quyền truy cập nào vào dữ liệu từ các bản sao lưu. Bạn chỉ phải tập trung vào tính bảo mật của khóa cá nhân. Điều đó dễ dàng hơn - bạn rất có thể mã hóa các bản sao lưu hàng ngày (nếu không thường xuyên hơn) trong khi việc khôi phục diễn ra theo thời gian, giúp cho việc lưu trữ khóa cá nhân ở vị trí an toàn hơn (ngay cả trên một thiết bị vật lý chuyên dụng) trở nên khả thi. Dưới đây là một ví dụ rất nhanh về cách bạn có thể sử dụng gpg để tạo một cặp khóa và sử dụng nó để mã hóa dữ liệu.

Đầu tiên, bạn phải tạo các khóa:

[email protected]:~# gpg --gen-key
gpg (GnuPG) 1.4.20; Copyright (C) 2015 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: keyring `/root/.gnupg/pubring.gpg' created
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection?
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <[email protected]>"

Real name: Krzysztof Ksiazek
Email address: [email protected]
Comment: Backup key
You selected this USER-ID:
    "Krzysztof Ksiazek (Backup key) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

Điều này đã tạo ra cả khóa công khai và khóa riêng tư. Tiếp theo, bạn muốn xuất khóa công khai của mình để sử dụng cho việc mã hóa dữ liệu:

gpg --armor --export [email protected] > mybackupkey.asc

Tiếp theo, bạn có thể sử dụng nó để mã hóa bản sao lưu của mình.

[email protected]:~# xtrabackup  --backup --stream=xbstream  | gzip | gpg -e --armor -r [email protected] -o /backup/pgp_encrypted.backup

Cuối cùng, một ví dụ về cách bạn có thể sử dụng khóa chính của mình (trong trường hợp này là khóa được lưu trữ trong vòng khóa cục bộ) để giải mã các bản sao lưu của bạn:

[email protected]:/backup# gpg -d /backup/pgp_encrypted.backup | gunzip | xbstream -x
encryption: using gcrypt 1.6.5

You need a passphrase to unlock the secret key for
user: "Krzysztof Ksiazek (Backup key) <[email protected]>"
4096-bit RSA key, ID E047CD69, created 2018-11-19 (main key ID BC341551)

gpg: gpg-agent is not available in this session
gpg: encrypted with 4096-bit RSA key, ID E047CD69, created 2018-11-19
      "Krzysztof Ksiazek (Backup key) <[email protected]>"

Xoay các khóa mã hóa của bạn

Bất kể bạn đã thực hiện loại mã hóa nào, đối xứng hay không đối xứng, bạn phải nghĩ đến việc xoay khóa. Trước hết, điều rất quan trọng là phải có một cơ chế để xoay các phím. Điều này có thể hữu ích trong trường hợp vi phạm bảo mật và bạn sẽ phải nhanh chóng thay đổi các khóa mà bạn sử dụng để mã hóa và giải mã dự phòng. Tất nhiên, trong trường hợp vi phạm bảo mật, bạn cần xem xét điều gì sẽ xảy ra với các bản sao lưu cũ đã được mã hóa bằng các khóa bị xâm phạm. Chúng đã bị xâm phạm mặc dù chúng vẫn có thể hữu ích và được yêu cầu theo Mục tiêu Điểm khôi phục. Có một số tùy chọn bao gồm mã hóa lại hoặc chuyển chúng sang bản địa hóa không bị xâm phạm.

Tăng tốc quá trình mã hóa bằng cách song song hóa nó

Nếu bạn có một tùy chọn để triển khai song song quá trình mã hóa, hãy xem xét nó. Hiệu suất mã hóa chủ yếu phụ thuộc vào sức mạnh của CPU, do đó cho phép nhiều lõi CPU hoạt động song song để mã hóa tệp sẽ dẫn đến thời gian mã hóa nhỏ hơn nhiều. Một số công cụ mã hóa cung cấp tùy chọn như vậy. Một trong số đó là xtrabackup có tùy chọn sử dụng mã hóa nhúng và song song hóa quá trình.

Những gì bạn đang tìm kiếm là các tùy chọn “--encrypt-key” hoặc “--encrypt-key-file” cho phép mã hóa được nhúng. Trong khi làm điều đó, bạn cũng có thể xác định “--encrypt-thread” và “--encrypt-chunk-size”. Thứ hai tăng bộ đệm hoạt động cho mã hóa, trước tiên xác định số lượng luồng nên được sử dụng để mã hóa.

Tất nhiên, đây chỉ là một trong những giải pháp bạn có thể thực hiện. Bạn có thể đạt được điều này bằng cách sử dụng các công cụ shell. Ví dụ bên dưới:

[email protected]:~# files=2 ; mariabackup --user=root --backup --pass=pass --stream=xbstream  |split -b 60M - backup ; ls backup* |  parallel -j ${files} --workdir "$(pwd)" 'echo "encrypting {}" ; openssl  enc -aes-256-cbc -salt -in "{}" -k mypass > "111{}"'

Đây hoàn toàn không phải là một giải pháp hoàn hảo vì bạn phải biết trước mức độ lớn, nhiều hay ít, bản sao lưu sẽ chia nó thành số lượng tệp được xác định trước phù hợp với mức song song bạn muốn đạt được (nếu bạn muốn sử dụng 2 CPU. lõi, bạn nên có hai tệp, nếu bạn muốn sử dụng 4 lõi, 4 tệp, v.v.). Nó cũng yêu cầu không gian đĩa lớn gấp đôi kích thước của bản sao lưu, vì lúc đầu, nó tạo ra nhiều tệp bằng cách sử dụng tách và sau đó mã hóa tạo ra một tập hợp các tệp được mã hóa khác. Mặt khác, nếu kích thước tập dữ liệu của bạn có thể chấp nhận được và bạn muốn cải thiện hiệu suất mã hóa thì đó là một tùy chọn bạn có thể xem xét. Để giải mã bản sao lưu, bạn sẽ phải giải mã từng tệp riêng lẻ và sau đó sử dụng "cat" để nối chúng lại với nhau.

Kiểm tra các bản sao lưu của bạn

Bất kể bạn định thực hiện mã hóa sao lưu như thế nào, bạn phải kiểm tra nó. Trước hết, tất cả các bản sao lưu phải được kiểm tra, mã hóa hoặc không. Các bản sao lưu có thể không hoàn chỉnh hoặc có thể bị một số loại lỗi. Bạn không thể chắc chắn rằng bản sao lưu của mình có thể được khôi phục cho đến khi bạn thực sự thực hiện khôi phục. Đó là lý do bắt buộc phải xác minh sao lưu thường xuyên. Mã hóa làm tăng thêm độ phức tạp cho quá trình sao lưu. Các vấn đề có thể xuất hiện tại thời điểm mã hóa, một lần nữa - lỗi hoặc trục trặc có thể làm hỏng các tệp được mã hóa. Sau khi được mã hóa, câu hỏi đặt ra là liệu có thể giải mã nó và khôi phục không?

Bạn nên có một quy trình kiểm tra khôi phục tại chỗ. Lý tưởng nhất là kiểm tra khôi phục sẽ được thực hiện sau mỗi lần sao lưu. Tối thiểu, bạn nên kiểm tra các bản sao lưu của mình một vài lần mỗi năm. Chắc chắn bạn phải kiểm tra nó ngay khi có thay đổi trong quy trình sao lưu. Bạn đã thêm nén vào bản sao lưu chưa? Bạn đã thay đổi phương pháp mã hóa? Bạn đã xoay khóa mã hóa? Tất cả những hành động đó có thể có một số tác động đến khả năng thực sự khôi phục bản sao lưu của bạn. Do đó, bạn nên đảm bảo rằng bạn kiểm tra toàn bộ quy trình sau mỗi lần thay đổi.

ClusterControl có thể tự động hóa quy trình xác minh, theo yêu cầu hoặc được lên lịch sau mỗi lần sao lưu.

Để xác minh một bản sao lưu hiện có, bạn chỉ cần chọn một bản sao lưu từ danh sách, nhấp vào tùy chọn “Khôi phục” và sau đó đi qua trình hướng dẫn khôi phục. Trước tiên, bạn cần xác minh bản sao lưu nào bạn muốn khôi phục.

Sau đó, ở bước tiếp theo, bạn nên chọn tùy chọn khôi phục và xác minh.

Bạn cần chuyển một số thông tin về máy chủ lưu trữ mà bạn muốn kiểm tra khôi phục. Nó phải có thể truy cập được thông qua SSH từ phiên bản ClusterControl. Bạn có thể quyết định duy trì và chạy máy chủ thử nghiệm khôi phục (sau đó kết xuất một số dữ liệu một phần từ nó nếu bạn muốn khôi phục một phần) hoặc tắt nó.

Bước cuối cùng là xác minh xem bạn đã chọn đúng hay chưa. Nếu có, bạn có thể bắt đầu công việc xác minh sao lưu.

Nếu quá trình xác minh hoàn tất thành công, bạn sẽ thấy rằng bản sao lưu được đánh dấu là đã xác minh trên danh sách các bản sao lưu.

Nếu bạn muốn tự động hóa quá trình này, nó cũng có thể thực hiện được với ClusterControl. Khi lên lịch sao lưu, bạn có thể bật xác minh sao lưu:

Thao tác này thêm một bước khác trong trình hướng dẫn lập lịch sao lưu.

Ở đây, bạn phải xác định lại máy chủ lưu trữ mà bạn muốn sử dụng để kiểm tra khôi phục sao lưu, quyết định xem bạn có muốn cài đặt phần mềm trên đó hay không (hoặc có thể bạn đã cài đặt xong), nếu bạn muốn duy trì máy chủ khôi phục và bạn có muốn cài đặt phần mềm đó không. muốn kiểm tra bản sao lưu ngay lập tức sau khi hoàn thành hoặc có thể bạn muốn đợi một chút.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tường lửa SQL trở nên dễ dàng với ClusterControl &ProxySQL

  2. So sánh các sản phẩm cung cấp trên đám mây cụm Galera:Phần thứ ba Microsoft Azure

  3. Đặt Bộ ký tự và đối chiếu của một cột trong MariaDB

  4. Hướng dẫn tự động hóa cơ sở dữ liệu với Somenines ClusterControl

  5. 8 cách để thêm phút vào ngày giờ trong MariaDB