All Products
Search
Document Center

ApsaraDB RDS:Enkripsi cadangan

Last Updated:Jun 21, 2026

Enkripsi cadangan menggunakan Percona XtraBackup untuk mengenkripsi cadangan instans RDS for MySQL. Tidak diperlukan perubahan pada aplikasi. Untuk menggunakan cadangan terenkripsi, Anda harus mengunduhnya, lalu melakukan dekompresi dan dekripsi.

Prasyarat

  • Instans RDS for MySQL Anda harus memenuhi persyaratan berikut:

    • Versi utama: 8.0, 5.7, atau 5.6

    • Edisi: High-availability Edition

    • Jenis penyimpanan: Premium Local SSDs

  • Beli instans KMS khusus.

Latar belakang

Key Management Service (KMS) menghasilkan dan mengelola kunci enkripsi. RDS tidak menyediakan kunci atau sertifikat yang diperlukan untuk enkripsi. Anda dapat menggunakan kunci yang dihasilkan secara otomatis oleh Alibaba Cloud atau kunci kustom Anda sendiri.

Untuk menggunakan kunci kustom dalam enkripsi cadangan, Anda harus terlebih dahulu membuat service-linked role. RDS menggunakan role ini untuk mengambil daftar kunci KMS, propertinya, serta alias-aliasnya. Hal ini memungkinkan konsol menampilkan daftar kunci enkripsi yang tersedia dan informasi enkripsi terkait setelah enkripsi cadangan diaktifkan.

Saat Anda mengaktifkan enkripsi cadangan, RDS memberi tag pada kunci yang Anda pilih. Sistem cadangan kemudian menggunakan service-linked role dan kunci tersebut untuk mengenkripsi cadangan.

Pertimbangan

Penting

Setelah enkripsi cadangan diaktifkan, fitur ini tidak dapat dinonaktifkan.

  • Anda tidak dapat mengganti kunci setelah enkripsi cadangan diaktifkan.

  • Enkripsi cadangan hanya berlaku untuk cadangan baru yang dibuat setelah Anda mengaktifkan fitur ini.

  • Untuk memulihkan cadangan terenkripsi ke lingkungan lokal, Anda harus mengunduhnya, lalu mendekripsi data.

    Catatan

    Jika Anda menggunakan cadangan untuk memulihkan data di konsol, Anda tidak perlu mendekripsinya secara manual. Backend secara otomatis mendekripsi data tersebut sebelum memulihkannya.

  • Jika Anda menggunakan kunci kustom yang sudah ada:

    • Jika Anda menonaktifkan kunci, menjadwalkan penghapusannya, atau menghapus bahan kuncinya, kunci tersebut menjadi tidak tersedia. Akibatnya, operasi O&M dan pemulihan yang bergantung pada cadangan ini akan gagal, yang berpotensi memengaruhi ketersediaan instans.

    • Anda harus menggunakan Akun Alibaba Cloud atau RAM user dengan izin berikut:

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "ram:CreateServiceLinkedRole"
                  ],
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "ram:ServiceName": "backupencryption.rds.aliyuncs.com"
                      }
                  }
              },
              {
                  "Action": [
                      "kms:ListResourceTags",
                      "kms:TagResource"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:kms:*:*:*"
                  ]
              }
          ]
      }
      Catatan

      Anda dapat mengonfigurasi izin dan memberi otorisasi akun di Konsol Resource Access Management (RAM). Untuk informasi selengkapnya, lihat Berikan otorisasi kepada RAM user untuk mengakses instans RDS.

Aktifkan enkripsi cadangan

  1. Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS berada. Lalu, temukan instans RDS tersebut dan klik ID-nya.

  2. Di panel navigasi kiri, klik Backup Recovery.

  3. Di halaman Backup Recovery, klik tab Backup Policy.

  4. Di bagian Backup encryption Settings, klik Edit dan aktifkan Backup Encryption Status.

  5. Di kotak dialog Backup encryption Settings, pilih Backup Master Key dan klik OK.

    • Use Automatically Generated Key

      Alibaba Cloud secara otomatis menghasilkan kunci.

    • Use an Existing Custom Key

      Pilih kunci yang sudah ada dari Key Management Service (KMS). Jika belum membuatnya, lihat Buat kunci.

      Catatan

      Pertama kali menggunakan kunci kustom, otorisasi diperlukan. Anda dapat mengikuti petunjuk di layar.

Anda tidak perlu mendekripsi cadangan secara manual saat menggunakannya di dalam Alibaba Cloud. Sistem secara otomatis mendekripsi data untuk operasi terkait, seperti pemulihan data. Namun, jika Anda mengunduh cadangan terenkripsi ke lingkungan lokal, Anda harus mendekripsi cadangan tersebut secara manual sebelum dapat menggunakannya. Untuk mendekripsi data, lihat Dekripsi data.

Dekripsi data

Bagian ini menunjukkan proses dekripsi menggunakan sistem Ubuntu 16.04 sebagai contoh.

Prasyarat

Prosedur

  1. Dapatkan ciphertext dan algoritma enkripsi dari set cadangan.

    1. Buka halaman RDS Instances, pilih wilayah di bilah navigasi atas, lalu klik ID instans target.

    2. Di panel navigasi kiri, klik Backup Recovery.

    3. Di halaman Backup Recovery, buka tab Base Backups > Data Backup.

    4. Di kolom Action dari set cadangan target, klik 1 > View Encryption Information untuk mendapatkan Ciphertext dan Encryption Algorithm.

  2. Panggil operasi API Decrypt. Pada parameter CiphertextBlob, masukkan Ciphertext yang Anda peroleh di Langkah 1 untuk mendapatkan string biner Plaintext yang dikodekan Base64.

    {
      "KeyId": "xxx",
      "KeyVersionId": "xxx",
      "Plaintext": "S14dTb16i4Qo",
      "RequestId": "7474865d-f1fc-49c8-bf4d-7323de86ce59"
    }
  3. Dekode Base64 string Plaintext dan konversi byte hasilnya ke bentuk heksadesimal untuk mendapatkan kunci dekripsi. Contoh ini menggunakan skrip Python 3 untuk melakukannya.

    1. Jalankan vi decrypt.py di command-line interface untuk membuka editor vi.

    2. Tekan i untuk masuk ke mode insert. Masukkan konten berikut, tekan ESC, lalu ketik :wq untuk menyimpan file dan keluar.

      import base64
      import binascii
      plaintext = 'S14dTbl6i4Qo**********'  # Masukkan Plaintext yang Anda peroleh di langkah sebelumnya di antara tanda kutip tunggal ('').
      password = binascii.b2a_hex(base64.b64decode(plaintext))   # Dapatkan password dekripsi dan tetapkan ke variabel password.
      print(str(password, 'utf-8'))   # Cetak password sebagai string.
                    
    3. Jalankan perintah python decrypt.py. Perintah ini mencetak kunci dekripsi. Berikut contoh kuncinya:

      4b5e1d4db97a********************
  4. Unduh data cadangan terenkripsi, lalu dekripsi datanya.

    1. Unduh data cadangan ke mesin lokal.

    2. Jalankan perintah berikut untuk membuat direktori, misalnya /home/mysql/data, guna menyimpan data cadangan.

      mkdir /home/mysql/data
    3. Dekompres paketnya. Pilih perintah dekompresi berdasarkan ekstensi file.

      Jenis file

      Perintah dekompresi

      tar package (.tar.gz)

      tar -izxvf test1.tar.gz -C /home/mysql/data

      xbstream package (.xb.gz)

      gzip -d -c test1.xb.gz | xbstream -x -v -C /home/mysql/data

      xbstream file package (_qp.xb)

      ## Unpack the file first.
      cat test1_qp.xb | xbstream -x -v -C /home/mysql/data
      
      ## Then, decompress the file.
      ### For MySQL 5.6/5.7
      innobackupex --decompress --remove-original /home/mysql/data
      ### For MySQL 8.0
      xtrabackup --decompress --remove-original --target-dir=/home/mysql/data

      xbstream qpress package (_xb.qp)

      qpress -do  test1_xb.qp  | xbstream -x -v -C /home/mysql/data

      Setelah dekompresi, sebagian besar file data memiliki ekstensi .xbcrypt, yang menandakan bahwa file tersebut terenkripsi.

      backup-my.cnf.xbcrypt        testdb
      dbfortest                     xtrabackup_binlog_info.xbcrypt
      ibdata1.xbcrypt               xtrabackup_checkpoints
      mysql                         xtrabackup_info.xbcrypt
      performance_schema            xtrabackup_logfile.xbcrypt
      rds_table_info_json_105244.log  xtrabackup_slave_filename_info.xbcrypt
      _recycle_bin_                 xtrabackup_slave_info.xbcrypt
    4. Jalankan perintah berikut untuk mendekripsi data.

      xtrabackup --decompress --remove-original --decrypt=AES256 --encrypt-key=4b5e1d4db97a******************** --target-dir=/home/mysql/data
      Catatan

      Parameter utama:

      • decrypt: Encryption Algorithm yang Anda peroleh di Langkah 1. Pada contoh ini, nilainya adalah AES256.

      • encrypt-key: Password dekripsi yang Anda peroleh di Langkah 3.

      • target-dir: Direktori tempat file cadangan disimpan.

      Setelah perintah dijalankan, ekstensi .xbcrypt menghilang dari nama file, yang menandakan bahwa data telah didekripsi.

      backup-my.cnf            testdb
      dbfortest                xtrabackup_binlog_info
      ibdata1                  xtrabackup_checkpoints
      mysql                    xtrabackup_info
      performance_schema       xtrabackup_logfile
      rds_table_info_json_105244.log  xtrabackup_slave_filename_info
      recycle_bin              xtrabackup_slave_info