@iota-big3/sdk-mdm
Version:
Mobile Device Management (MDM) capabilities for enterprise device control and security
401 lines (332 loc) • 8.71 kB
Markdown
# @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