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 FileProfileSettings
dari objek , , PolicyProfileSettings
atau 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 |
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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk