Bagikan melalui


Microsoft Information Protection SDK - Penyimpanan cache

MIP SDK mengimplementasikan database SQLite3 untuk mempertahankan penyimpanan cache SDK. Sebelum SDK Perlindungan Informasi Microsoft versi 1.3, hanya dua jenis penyimpanan status cache yang didukung: Pada disk dan dalam memori. Kedua jenis ini menyimpan data tertentu, khususnya lisensi untuk konten yang dilindungi dan informasi kebijakan, dalam teks biasa.

Untuk meningkatkan postur keamanan SDK, kami menambahkan dukungan untuk jenis kedua pada cache disk yang menggunakan API kriptografi khusus platform untuk melindungi database dan kontennya.

Aplikasi menentukan jenis cache saat memuat profil sebagai bagian FileProfileSettingsdari objek , , PolicyProfileSettingsatau ProtectionProfileSettings . Jenis cache statis untuk masa pakai profil. Mengubah ke jenis penyimpanan cache yang berbeda mengharuskan untuk menghancurkan profil yang ada dan membuat yang baru.

Jenis Penyimpanan Cache

Mulai dari rilis MIP SDK 1.3, jenis cache penyimpanan berikut tersedia.

Jenis Tujuan
InMemory Mempertahankan cache penyimpanan dalam memori dalam aplikasi.
OnDisk Menyimpan database pada disk di direktori yang disediakan di objek pengaturan. Database disimpan dalam teks biasa.
OnDiskEncrypted Menyimpan database pada disk di direktori yang disediakan di objek pengaturan. Database dienkripsi menggunakan API khusus OS.

Setiap mesin yang dihasilkan oleh aplikasi menghasilkan kunci enkripsi baru.

Penyimpanan cache diatur melalui salah satu objek pengaturan profil, melalui mip::CacheStorageType enum.

FileProfile::Settings profileSettings(mMipContext,
    mip::CacheStorageType::OnDiskEncrypted, // Define the storage type to use.
    mAuthDelegate,
    std::make_shared<sample::consent::ConsentDelegateImpl>(),
    std::make_shared<FileProfileObserver>());

Kapan menggunakan setiap jenis

Penyimpanan cache penting untuk mempertahankan akses offline ke informasi yang didekripsi sebelumnya, dan memastikan performa untuk operasi dekripsi ketika data sebelumnya telah digunakan.

  • Di Penyimpanan Memori: Gunakan jenis penyimpanan ini untuk proses berumur panjang di mana mempertahankan kebijakan atau informasi cache lisensi di seluruh mulai ulang layanan tidak diperlukan.
  • Pada Disk: Gunakan jenis penyimpanan ini untuk aplikasi di mana proses mungkin sering berhenti dan dimulai, tetapi harus mempertahankan cache kebijakan, lisensi, dan penemuan layanan di seluruh mulai ulang. Jenis cache penyimpanan ini adalah teks biasa, jadi lebih cocok untuk beban kerja server di mana pengguna tidak akan memiliki akses ke penyimpanan status. Contohnya adalah layanan Windows atau daemon Linux yang berjalan di server, atau aplikasi SaaS di mana hanya admin layanan yang akan memiliki akses ke data status.
  • Pada Disk dan Terenkripsi: Gunakan jenis penyimpanan ini untuk aplikasi di mana proses mungkin sering berhenti dan dimulai, tetapi harus mempertahankan cache kebijakan, lisensi, dan penemuan layanan di seluruh mulai ulang. Cache penyimpanan ini dienkripsi, jadi lebih cocok untuk aplikasi stasiun kerja di mana pengguna dapat menelusuri dan menemukan database status. Enkripsi membantu memastikan bahwa pengguna yang mengintip tidak akan memiliki akses melalui konten kebijakan atau konten lisensi perlindungan dalam teks biasa. Penting untuk dicatat bahwa dalam semua kasus data dienkripsi dengan kunci yang dapat diakses pengguna. Seterusnya yang terampil mampu mendekripsi cache dengan upaya minimal, tetapi ini mencegah perusakan dan penjelajahan.

Platform yang Didukung untuk Enkripsi

Platform Versi Catatan
Microsoft Windows Windows 8 dan yang lebih baru Windows 7 hanya mendukung CacheStorageType::OnDisk
macOS Sierra tinggi dan yang lebih baru
Ubuntu Linux 16.04 dan yang lebih baru SecretService Memerlukan bendera fitur.LinuxEncryptedCache
Android Android 7.0 atau yang lebih baru
iOS Semua versi yang didukung

Meskipun MIP SDK mendukung distribusi Linux lainnya, kami tidak menguji enkripsi cache di RedHat Enterprise Linux, CentOS, atau Debian.

Catatan

Bendera fitur untuk mengaktifkan penyimpanan cache di Linux diatur melalui mip::MipConfiguration::SetFeatureSettings()

Tabel database penyimpanan cache

MIP SDK mempertahankan dua database untuk cache. Salah satunya adalah untuk SDK Perlindungan, dan mempertahankan detail status perlindungan. Yang lainnya adalah untuk SDK Kebijakan dan mempertahankan detail kebijakan dan informasi layanan. Keduanya disimpan di jalur yang ditentukan dalam objek pengaturan, di bawah mip\mip.policies.sqlite3 dan mip\mip.protection.sqlite3.

Database Perlindungan

Table Tujuan Dienkripsi
AuthInfoStore Menyimpan detail tantangan autentikasi. No
ConsentStore Menyimpan hasil persetujuan untuk setiap mesin. No
DnsInfoStore Menyimpan hasil pencarian DNS untuk operasi Perlindungan No
EngineStore Menyimpan detail mesin, pengguna terkait, dan data klien kustom No
KeyStore Menyimpan kunci enkripsi simetris untuk setiap mesin. Ya
LicenseStore Penyimpanan menggunakan informasi lisensi untuk data yang didekripsi sebelumnya. Ya
SdInfoStore Menyimpan hasil penemuan layanan. No

Catatan

Cache LicenseStore mengharuskan identitas diatur pada mesin perlindungan atau mesin file.

Database Kebijakan

Table Tujuan Dienkripsi
KeyStore Menyimpan kunci enkripsi simetris untuk setiap mesin. Ya
Kebijakan Menyimpan informasi kebijakan label untuk setiap pengguna. Ya
PoliciesUrl Menyimpan URL layanan kebijakan backend untuk pengguna tertentu. No
Sensitivitas Menyimpan aturan klasifikasi untuk kebijakan pengguna tertentu. Ya
Url Sensitivitas Menyimpan URL layanan kebijakan sensitivitas backend untuk pengguna tertentu. No

Pertimbangan ukuran database

Ukuran database tergantung pada dua faktor: Kuantitas mesin yang ditambahkan ke cache dan kuantitas lisensi perlindungan yang telah di-cache. Pada MIP SDK 1.3, tidak ada mekanisme untuk membersihkan cache lisensi saat kedaluwarsa. Harus ada proses eksternal untuk menghapus cache jika tumbuh lebih besar dari yang diinginkan.

Kontributor paling signifikan untuk pertumbuhan database adalah cache lisensi perlindungan. Jika penembolokan lisensi tidak diperlukan, baik karena perjalanan pulang pergi layanan tidak akan memengaruhi performa aplikasi Anda, atau cache mungkin tumbuh terlalu besar, cache lisensi dapat dinonaktifkan. Ini dicapai dengan mengatur CanCacheLicenses pada objek ke FileProfile::Settings false.

FileProfile::Settings profileSettings(mMipContext,
    mip::CacheStorageType::OnDiskEncrypted,
    mAuthDelegate,
    std::make_shared<sample::consent::ConsentDelegateImpl>(),
    std::make_shared<FileProfileObserver>());

profileSettings.SetCanCacheLicenses(false);

Mesin Penembolokan

Di MIP SDK, mesin dibuat untuk setiap pengguna yang melakukan operasi terautentikasi apa pun. Mesin menyediakan antarmuka untuk semua operasi yang dilakukan atas nama identitas terautentikasi. Seperti yang dibahas dalam konsep Profil dan Mesin, FileEngine, PolicyEngine, atau ProtectionEngine masing-masing memiliki dua status CREATED dan LOADED. Mesin perlu dibuat dan dimuat agar dapat melakukan operasi SDK. Jika mesin tidak digunakan, SDK menyimpan cache mesin dan mempertahankannya dalam CREATED status selama mungkin tergantung pada sumber daya yang tersedia. Setiap kelas profil SDK masing-masing juga menyediakan metode UnloadEngineAsync untuk mencapainya secara eksplisit.

Setiap mesin memiliki pengidentifikasi id unik yang digunakan dalam semua operasi manajemen mesin. Aplikasi klien dapat memberikan id secara eksplisit, atau SDK dapat menghasilkannya, jika tidak disediakan oleh aplikasi. Jika pengidentifikasi unik disediakan menggunakan objek pengaturan mesin pada saat pembuatan mesin, dan penembolokan diaktifkan di profil API seperti yang dijelaskan di atas, mesin yang sama dapat digunakan setiap kali pengguna melakukan operasi dengan SDK. Ikuti cuplikan kode untuk membuat [mip::FileEngine](./concept-profile-engine-file-engine-cpp.md#create-file-engine-settings), [mip::PolicyEngine](./concept-profile-engine-policy-engine-cpp.md#implementation-create-policy-engine-settings).

Gagal menyediakan engineId yang ada akan mengakibatkan perjalanan pulang pergi layanan tambahan untuk mengambil kebijakan dan akan mengambil lisensi yang mungkin telah di-cache untuk mesin yang ada. Penembolokan ID mesin memungkinkan akses offline SDK ke informasi yang didekripsi sebelumnya dan peningkatan performa umum.

Langkah berikutnya

Selanjutnya, pelajari selengkapnya tentang konsep objek Profil dan Mesin untuk memahami cara mengatur ID mesin MIP dengan benar untuk menggunakan penembolokan MIP SDK dengan benar.