UNPKG

@iota-big3/sdk-mdm

Version:

Mobile Device Management (MDM) capabilities for enterprise device control and security

401 lines (332 loc) 8.71 kB
# @iota-big3/sdk-mdm Enterprise Mobile Device Management (MDM) for comprehensive device control, security policy enforcement, and compliance monitoring. ## Features ### 📱 Device Enrollment - **Zero-touch enrollment** for corporate devices - **BYOD (Bring Your Own Device)** support - **Apple DEP** (Device Enrollment Program) integration - **Android Enterprise** enrollment - **Windows Autopilot** support - **QR code** and NFC enrollment ### 🔒 Security Policies - **Password policies** (complexity, rotation, history) - **Encryption enforcement** (device & SD card) - **App restrictions** (blacklist/whitelist) - **Network policies** (VPN, Wi-Fi, certificates) - **Compliance rules** with automated actions - **Geofencing** and location tracking ### 📦 App Management - **Enterprise app store** creation - **Silent app installation** and updates - **App configuration** deployment - **License management** for volume purchases - **App usage analytics** - **Containerization** for work apps ### 🔧 Remote Actions - **Remote wipe** (full or selective) - **Device lock** with custom message - **Password reset** assistance - **Location tracking** for lost devices - **Remote diagnostics** and troubleshooting - **Configuration updates** push ### 📊 Compliance & Monitoring - **Real-time compliance** checking - **Device health** monitoring - **Security posture** assessment - **Audit trail** for all actions - **Automated remediation** workflows - **Custom compliance** rules ### 🎫 Certificate Management - **Certificate deployment** (user & device) - **Automatic renewal** before expiry - **SCEP** (Simple Certificate Enrollment Protocol) - **Certificate revocation** support - **Multi-CA** support ## Installation ```bash npm install @iota-big3/sdk-mdm ``` ## Quick Start ```typescript import { MDMManager } from "@iota-big3/sdk-mdm"; // Initialize MDM const mdm = new MDMManager({ tenant: "enterprise-corp", platforms: ["ios", "android", "windows"], enrollment: { methods: ["qr", "email", "dep", "zero-touch"], requireApproval: true, }, }); // Enroll a device const device = await mdm.enrollDevice({ platform: "ios", udid: "device-unique-id", owner: "user@company.com", ownership: "corporate", }); // Apply security policy await mdm.applyPolicy(device.id, { passcode: { required: true, minLength: 8, complexity: "alphanumeric", maxAge: 90, }, encryption: { required: true, sdCard: true, }, apps: { blacklist: ["com.games.*"], whitelist: ["com.company.*"], }, }); ``` ## Device Enrollment ### Zero-Touch Enrollment ```typescript // Configure Android Enterprise zero-touch await mdm.configureZeroTouch({ dpc: "@iota-big3/mdm-android", configuration: { wifi: { ssid: "CorpNet", security: "WPA2" }, apps: ["com.company.app"], policies: ["default-corporate"], }, }); // Configure Apple DEP await mdm.configureDEP({ server: "mdm.company.com", profile: { department: "IT", supportPhone: "+1-555-0100", isSupervised: true, isMultiUser: false, }, }); ``` ### BYOD Enrollment ```typescript // Create enrollment profile const profile = await mdm.createEnrollmentProfile({ name: "Employee BYOD", platform: "ios", ownership: "personal", containerization: true, selectiveWipe: true, }); // Generate enrollment QR code const qrCode = await mdm.generateEnrollmentQR(profile.id); ``` ## Security Policies ### Creating Policies ```typescript const policy = await mdm.createPolicy({ name: "High Security", platforms: ["ios", "android"], settings: { device: { passcode: { required: true, minLength: 10, requireAlphanumeric: true, maxFailedAttempts: 5, maxInactivity: 5, // minutes }, encryption: { required: true }, jailbreakDetection: true, }, apps: { preventBackup: true, allowedApps: ["com.company.*"], blockedApps: ["com.facebook.*", "com.tiktok.*"], managedAppConfig: { "com.company.app": { serverUrl: "https://api.company.com", enableOffline: true, }, }, }, network: { vpn: { required: true, config: "company-vpn-profile", }, wifi: { onlyManaged: true, profiles: ["CorpNet", "CorpGuest"], }, }, }, }); ``` ### Compliance Rules ```typescript // Define compliance rules await mdm.defineComplianceRule({ name: "OS Version Check", condition: { osVersion: { min: "15.0" }, // iOS 15+ lastCheckin: { maxDays: 7 }, }, actions: { nonCompliant: [ { type: "notify", target: "user", message: "Please update your OS" }, { type: "restrict", apps: ["com.company.confidential"] }, { type: "notify", target: "admin", after: "3 days" }, ], critical: [ { type: "block", resource: "corporate-email" }, { type: "wipe", selective: true, after: "7 days" }, ], }, }); ``` ## App Management ### Enterprise App Distribution ```typescript // Upload enterprise app const app = await mdm.uploadApp({ platform: "ios", file: "./apps/company-app.ipa", metadata: { name: "Company App", version: "2.1.0", description: "Internal company application", category: "business", }, }); // Deploy to devices await mdm.deployApp(app.id, { target: { groups: ["sales-team"] }, installation: { silent: true, preventBackup: true, vpnRequired: true, }, }); ``` ### App Configuration ```typescript // Push app configuration await mdm.configureApp("com.company.app", { serverEndpoint: "https://api.company.com", syncInterval: 300, // seconds offlineMode: true, features: { camera: false, location: true, }, }); ``` ## Remote Actions ### Device Management ```typescript // Lock device await mdm.lockDevice(deviceId, { message: "This device is locked. Contact IT: x1234", phone: "+1-555-0100", }); // Remote wipe await mdm.wipeDevice(deviceId, { type: "selective", // or 'full' preserveESIM: true, confirmation: "CONFIRM-WIPE-12345", }); // Location tracking const location = await mdm.locateDevice(deviceId); console.log(`Device at ${location.latitude}, ${location.longitude}`); ``` ## Monitoring & Reporting ### Real-time Monitoring ```typescript // Device health monitoring mdm.on("device:health", (event) => { if (event.battery < 20) { console.log(`Low battery on ${event.deviceId}`); } if (event.storage.free < 1024) { // MB console.log(`Low storage on ${event.deviceId}`); } }); // Compliance monitoring mdm.on("compliance:violation", async (event) => { console.log(`Compliance violation: ${event.rule} on ${event.deviceId}`); // Auto-remediate if (event.rule === "outdated-os") { await mdm.pushNotification(event.deviceId, { title: "OS Update Required", body: "Please update your device OS to remain compliant", action: "settings://system/update", }); } }); ``` ### Reporting ```typescript // Generate compliance report const report = await mdm.generateReport({ type: "compliance", period: "last-30-days", groupBy: "department", }); // Device inventory const inventory = await mdm.getInventory({ include: ["hardware", "software", "certificates"], filters: { platform: "ios", ownership: "corporate", }, }); ``` ## Platform-Specific Features ### iOS-Specific ```typescript // Supervised mode features await mdm.ios.configureSupervisedMode(deviceId, { allowAirDrop: false, allowAppCellularDataModification: false, forceAirPrintTrustedCertificates: true, }); // Shared iPad configuration await mdm.ios.configureSharedIPad(deviceId, { maxUsers: 20, userSessionTimeout: 30, // minutes guestAllowed: false, }); ``` ### Android-Specific ```typescript // Work profile setup await mdm.android.setupWorkProfile(deviceId, { crossProfileSharing: "blocked", workAppsOnly: true, separatePasscode: true, }); // Kiosk mode await mdm.android.enableKioskMode(deviceId, { app: "com.company.kiosk", allowedApps: ["com.company.kiosk"], systemBars: false, homeButton: false, }); ``` ## Integration ### With Other SDK Packages ```typescript import { MDMManager } from "@iota-big3/sdk-mdm"; import { SecurityManager } from "@iota-big3/sdk-security"; import { AuthManager } from "@iota-big3/sdk-auth"; // Integrate with security policies const security = new SecurityManager(); await mdm.integrateSecurityPolicies(security); // Integrate with auth for SSO const auth = new AuthManager(); await mdm.configureSSOAuth(auth); ``` ## Contributing See [CONTRIBUTING.md](../../CONTRIBUTING.md) for development setup and guidelines. ## License MIT