Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
- Penyimpanan Memori: Gunakan jenis penyimpanan ini untuk proses berumur panjang di mana tidak diperlukan untuk mempertahankan kebijakan atau informasi cache lisensi saat layanan dimulai ulang.
- Pada Disk: Gunakan jenis penyimpanan ini untuk aplikasi yang prosesnya mungkin sering berhenti dan dimulai, tetapi harus mempertahankan cache kebijakan, lisensi, dan penemuan layanan saat memulai 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 mulai dan berhenti, tetapi harus mempertahankan konsistensi kebijakan, lisensi, dan cache penemuan layanan selama setiap kali 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 11, Versi dukungan Windows Server | |
| macOS | macOS High Sierra dan versi lebih baru | |
| Ubuntu Linux | 22.04 dan yang lebih baru | Memerlukan bendera fitur SecretService dan 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 memelihara detail kebijakan serta informasi layanan. Keduanya disimpan di jalur yang ditentukan dalam objek pengaturan, di bawah mip\mip.policies.sqlite3 dan mip\mip.protection.sqlite3.
Catatan
MIP SDK tidak menjamin kompatibilitas di berbagai versi cache-nya. Dianjurkan untuk menghapus semua file dalam direktori mip\, atau direktori alternatif apa pun yang diubah dari pengaturan default, sebelum meningkatkan aplikasi ke versi baru MIP SDK.
Database Perlindungan
| Tabel | Tujuan | Dienkripsi |
|---|---|---|
| AuthInfoStore | Menyimpan detail tantangan autentikasi. | Tidak |
| ConsentStore | Menyimpan hasil persetujuan untuk setiap mesin. | Tidak |
| DnsInfoStore | Menyimpan hasil pencarian DNS untuk operasi Perlindungan | Tidak |
| EngineStore | Menyimpan detail mesin, pengguna terkait, dan data klien kustom | Tidak |
| 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. | Tidak |
Catatan
Cache LicenseStore mengharuskan identitas diatur pada mesin perlindungan data atau mesin pengelola file.
Database Kebijakan
| Tabel | Tujuan | Dienkripsi |
|---|---|---|
| KeyStore | Menyimpan kunci enkripsi simetris untuk setiap mesin. | Ya |
| Kebijakan | Menyimpan informasi kebijakan label untuk setiap pengguna. | Ya |
| KebijakanUrl | Menyimpan URL layanan kebijakan backend untuk pengguna tertentu. | Tidak |
| Kepekaan | Menyimpan aturan klasifikasi untuk kebijakan pengguna tertentu. | Ya |
| Url Sensitivitas | Menyimpan URL layanan kebijakan sensitivitas backend untuk pengguna tertentu. | Tidak |
Pertimbangan ukuran database
Ukuran database tergantung pada dua faktor: Kuantitas mesin yang ditambahkan ke cache dan kuantitas lisensi perlindungan yang telah di-cache. Mulai MIP SDK 1.18, DeleteStoredData() di ProtectionEngine dapat digunakan untuk menghapus data mesin cache secara terprogram. Untuk versi sebelumnya, proses eksternal mungkin diperlukan untuk menghapus cache jika tumbuh lebih besar dari yang diinginkan.
Kontributor paling signifikan untuk pertumbuhan database adalah cache lisensi perlindungan. Jika penyimpanan sementara lisensi tidak diperlukan, baik karena kegiatan bolak-balik layanan tidak akan memengaruhi performa aplikasi Anda, atau cache mungkin tumbuh terlalu besar sehingga cache lisensi bisa dinonaktifkan. Ini dicapai dengan mengatur CanCacheLicenses pada objek FileProfile::Settings ke false.
FileProfile::Settings profileSettings(mMipContext,
mip::CacheStorageType::OnDiskEncrypted,
mAuthDelegate,
std::make_shared<sample::consent::ConsentDelegateImpl>(),
std::make_shared<FileProfileObserver>());
profileSettings.SetCanCacheLicenses(false);
Mesin Cache
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 peng-cache-an diaktifkan di profil API seperti yang dijelaskan di atas, mesin yang sama dapat dipakai 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 sudah ada akan mengakibatkan pengulangan tambahan dalam layanan untuk mengambil kebijakan dan akan mengambil lisensi yang mungkin telah di-cache untuk mesin yang sudah 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.