1 2 3# @ohos.enterprise.securityManager(安全管理) 4 5本模块提供设备安全管理的能力,包括查询安全补丁状态、查询文件加密状态等。 6 7> **说明:** 8> 9> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 10> 11> 本模块接口仅可在Stage模型下使用。 12> 13> 本模块接口仅对[设备管理应用](../../mdm/mdm-kit-guide.md#功能介绍)开放,需将设备管理应用激活后调用,实现相应功能。 14 15## 导入模块 16 17```ts 18import { securityManager } from '@kit.MDMKit'; 19``` 20 21## securityManager.uninstallUserCertificate 22 23uninstallUserCertificate(admin: Want, certUri: string): Promise<void> 24 25指定设备管理应用卸载用户证书,使用Promise异步回调。 26 27**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE 28 29**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 30 31**参数:** 32 33| 参数名 | 类型 | 必填 | 说明 | 34| ------- | ------------------------------------------------------- | ---- | --------------------------------- | 35| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 设备管理应用。 | 36| certUri | string | 是 | 证书uri,由安装用户证书接口返回。 | 37 38**返回值:** 39 40| 类型 | 说明 | 41| ------------------- | ------------------------------------------------------------ | 42| Promise<void> | 无返回结果的Promise对象。当指定设备管理应用卸载用户证书失败时会抛出错误对象。 | 43 44**错误码**: 45 46以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 47 48| 错误码ID | 错误信息 | 49| -------- | ------------------------------------------------------------ | 50| 9200001 | The application is not an administrator application of the device. | 51| 9200002 | The administrator application does not have permission to manage the device. | 52| 9201001 | Failed to manage the certificate. | 53| 201 | Permission verification failed. The application does not have the permission required to call the API. | 54| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 55 56**示例:** 57 58```ts 59import { Want } from '@kit.AbilityKit'; 60import { BusinessError } from '@kit.BasicServicesKit'; 61let wantTemp: Want = { 62 bundleName: 'com.example.myapplication', 63 abilityName: 'EntryAbility', 64}; 65let aliasStr = "certName" 66securityManager.uninstallUserCertificate(wantTemp, aliasStr).then(() => { 67 console.info(`Succeeded in uninstalling user certificate.`); 68}).catch((err: BusinessError) => { 69 console.error(`Failed to uninstall user certificate. Code is ${err.code}, message is ${err.message}`); 70}); 71``` 72 73## securityManager.installUserCertificate 74 75installUserCertificate(admin: Want, certificate: CertBlob): Promise<string> 76 77指定设备管理应用安装用户证书,使用Promise异步回调。 78 79**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE 80 81**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 82 83**参数:** 84 85| 参数名 | 类型 | 必填 | 说明 | 86| ----------- | ------------------------------------------------------- | ---- | -------------- | 87| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 设备管理应用。 | 88| certificate | [CertBlob](#certblob) | 是 | 证书信息。 | 89 90**返回值:** 91 92| 类型 | 说明 | 93| --------------------- | ---------------------------------------------------- | 94| Promise<string> | Promise对象,返回当前证书安装后的uri,用于卸载证书。 | 95 96**错误码**: 97 98以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 99 100| 错误码ID | 错误信息 | 101| -------- | ------------------------------------------------------------ | 102| 9200001 | The application is not an administrator application of the device. | 103| 9200002 | The administrator application does not have permission to manage the device. | 104| 9201001 | Failed to manage the certificate. | 105| 201 | Permission verification failed. The application does not have the permission required to call the API. | 106| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 107 108**示例:** 109 110```ts 111import { Want } from '@kit.AbilityKit'; 112import { BusinessError } from '@kit.BasicServicesKit'; 113let wantTemp: Want = { 114 bundleName: 'com.example.myapplication', 115 abilityName: 'EntryAbility', 116}; 117let certFileArray: Uint8Array = new Uint8Array(); 118// The variable context needs to be initialized in MainAbility's onCreate callback function 119// test.cer needs to be placed in the rawfile directory 120getContext().resourceManager.getRawFileContent("test.cer").then((value) => { 121 certFileArray = value 122 securityManager.installUserCertificate(wantTemp, { inData: certFileArray, alias: "cert_alias_xts" }) 123 .then((result) => { 124 console.info(`Succeeded in installing user certificate, result : ${JSON.stringify(result)}`); 125 }).catch((err: BusinessError) => { 126 console.error(`Failed to install user certificate. Code: ${err.code}, message: ${err.message}`); 127 }) 128}).catch((err: BusinessError) => { 129 console.error(`Failed to get row file content. message: ${err.message}`); 130 return 131}); 132``` 133 134## securityManager.getSecurityStatus 135 136getSecurityStatus(admin: Want, item: string): string 137 138获取安全策略信息。 139 140**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 141 142**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 143 144**参数:** 145 146| 参数名 | 类型 | 必填 | 说明 | 147| ------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | 148| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 设备管理应用。 | 149| item | string | 是 | 安全策略名称。<br/>- patch:设备安全补丁。<br/>- encryption:设备文件系统加密。 <!--RP1--><!--RP1End-->| 150 151**返回值:** 152 153| 类型 | 说明 | 154| ------ | -------------------- | 155| string | 返回安全策略状态值。 | 156 157**错误码**: 158 159以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 160 161| 错误码ID | 错误信息 | 162| -------- | ------------------------------------------------------------ | 163| 9200001 | The application is not an administrator application of the device. | 164| 9200002 | The administrator application does not have permission to manage the device. | 165| 201 | Permission verification failed. The application does not have the permission required to call the API. | 166| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 167 168**示例:** 169 170```ts 171import { Want } from '@kit.AbilityKit'; 172let wantTemp: Want = { 173 bundleName: 'com.example.myapplication', 174 abilityName: 'EntryAbility', 175}; 176 177try { 178 let result: string = securityManager.getSecurityStatus(wantTemp, 'patch'); 179 console.info(`Succeeded in getting security patch tag. tag: ${result}`); 180} catch (err) { 181 console.error(`Failed to get security patch tag. Code: ${err.code}, message: ${err.message}`); 182} 183``` 184 185## securityManager.setPasswordPolicy<sup>12+</sup> 186 187setPasswordPolicy(admin: Want, policy: PasswordPolicy): void 188 189指定设备管理应用设置设备口令策略。 190 191**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 192 193**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 194 195**参数:** 196 197| 参数名 | 类型 | 必填 | 说明 | 198| -------- | ---------------------------------------- | ---- | ------------------------------- | 199| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 设备管理应用。 | 200| policy | [PasswordPolicy](#passwordpolicy) | 是 | 设备口令策略。 | 201 202**错误码**: 203 204以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 205 206| 错误码ID | 错误信息 | 207| ------- | ---------------------------------------------------------------------------- | 208| 9200001 | The application is not an administrator application of the device. | 209| 9200002 | The administrator application does not have permission to manage the device. | 210| 201 | Permission verification failed. The application does not have the permission required to call the API. | 211| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 212 213**示例:** 214 215```ts 216import { Want } from '@kit.AbilityKit'; 217let wantTemp: Want = { 218 bundleName: 'com.example.myapplication', 219 abilityName: 'EntryAbility', 220}; 221 222let policy: securityManager.PasswordPolicy = { 223 complexityRegex: '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$', 224 validityPeriod: 1, 225 additionalDescription: '至少八个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符', 226} 227try { 228 securityManager.setPasswordPolicy(wantTemp, policy); 229 console.info(`Succeeded in setting password policy.`); 230} catch(err) { 231 console.error(`Failed to set password policy. Code: ${err.code}, message: ${err.message}`); 232} 233``` 234 235## securityManager.getPasswordPolicy<sup>12+</sup> 236 237getPasswordPolicy(admin: Want): PasswordPolicy 238 239指定设备管理应用获取设备口令策略。 240 241**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 242 243**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 244 245**参数:** 246 247| 参数名 | 类型 | 必填 | 说明 | 248| -------- | ---------------------------------------- | ---- | ------------------------------- | 249| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 设备管理应用。 | 250 251**返回值:** 252 253| 类型 | 说明 | 254| --------------------- | ------------------------- | 255| [PasswordPolicy](#passwordpolicy) | 设备口令策略。 | 256 257**错误码**: 258 259以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 260 261| 错误码ID | 错误信息 | 262| ------- | ---------------------------------------------------------------------------- | 263| 9200001 | The application is not an administrator application of the device. | 264| 9200002 | The administrator application does not have permission to manage the device. | 265| 201 | Permission verification failed. The application does not have the permission required to call the API. | 266| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 267 268**示例:** 269 270```ts 271import { Want } from '@kit.AbilityKit'; 272let wantTemp: Want = { 273 bundleName: 'com.example.myapplication', 274 abilityName: 'EntryAbility', 275}; 276 277try { 278 let result: securityManager.PasswordPolicy = securityManager.getPasswordPolicy(wantTemp); 279 console.info(`Succeeded in getting password policy, result : ${JSON.stringify(result)}`); 280} catch(err) { 281 console.error(`Failed to get password policy. Code: ${err.code}, message: ${err.message}`); 282} 283``` 284 285## securityManager.setAppClipboardPolicy<sup>12+</sup> 286 287setAppClipboardPolicy(admin: Want, tokenId: number, policy: ClipboardPolicy): void 288 289指定设备管理应用设置设备剪贴板策略。 290 291**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 292 293**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 294 295**参数:** 296 297| 参数名 | 类型 | 必填 | 说明 | 298| -------- | ---------------------------------------- | ---- | ------------------------------- | 299| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 设备管理应用。 | 300| tokenId | number | 是 | 目标应用的身份标识。可通过应用的[ApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md)获得。当前只支持最多100个tokenId被保存策略。 | 301| policy | [ClipboardPolicy](#clipboardpolicy) | 是 | 剪贴板策略。 | 302 303**错误码**: 304 305以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 306 307| 错误码ID | 错误信息 | 308| ------- | ---------------------------------------------------------------------------- | 309| 9200001 | The application is not an administrator application of the device. | 310| 9200002 | The administrator application does not have permission to manage the device. | 311| 201 | Permission verification failed. The application does not have the permission required to call the API. | 312| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 313 314**示例:** 315 316```ts 317import { Want } from '@kit.AbilityKit'; 318let wantTemp: Want = { 319 bundleName: 'com.example.myapplication', 320 abilityName: 'EntryAbility', 321}; 322let tokenId: number = 586874394; 323try { 324 securityManager.setAppClipboardPolicy(wantTemp, tokenId, securityManager.ClipboardPolicy.IN_APP); 325 console.info(`Succeeded in setting clipboard policy.`); 326} catch(err) { 327 console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`); 328} 329``` 330 331## securityManager.getAppClipboardPolicy<sup>12+</sup> 332 333getAppClipboardPolicy(admin: Want, tokenId?: number): string 334 335指定设备管理应用获取设备剪贴板策略。 336 337**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY 338 339**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 340 341**参数:** 342 343| 参数名 | 类型 | 必填 | 说明 | 344| -------- | ---------------------------------------- | ---- | ------------------------------- | 345| admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 设备管理应用。 | 346| tokenId | number | 否 | 目标应用的身份标识。可通过应用的[ApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md)获得。 | 347 348**返回值:** 349 350| 类型 | 说明 | 351| --------------------- | ------------------------- | 352| ClipboardPolicy | 设备剪贴板策略。| 353 354**错误码**: 355 356以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 357 358| 错误码ID | 错误信息 | 359| ------- | ---------------------------------------------------------------------------- | 360| 9200001 | The application is not an administrator application of the device. | 361| 9200002 | The administrator application does not have permission to manage the device. | 362| 201 | Permission verification failed. The application does not have the permission required to call the API. | 363| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 364 365**示例:** 366 367```ts 368import { Want } from '@kit.AbilityKit'; 369let wantTemp: Want = { 370 bundleName: 'com.example.myapplication', 371 abilityName: 'EntryAbility', 372}; 373let tokenId: number = 586874394; 374try { 375 let result: string = securityManager.getAppClipboardPolicy(wantTemp, tokenId); 376 console.info(`Succeeded in getting password policy, result : ${result}`); 377} catch(err) { 378 console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`); 379} 380``` 381 382## CertBlob 383 384证书信息。 385 386**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 387 388| 名称 | 类型 | 必填 | 说明 | 389| ------ | ---------- | ---- | ------------------ | 390| inData | Uint8Array | 是 | 证书的二进制内容。 | 391| alias | string | 是 | 证书别名。 | 392 393## PasswordPolicy 394 395设备口令策略。 396 397**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 398 399| 名称 | 类型 | 必填 | 说明 | 400| ----------- | --------| ---- | ------------------------------- | 401| complexityRegex | string | 否 | 口令复杂度正则表达式。 | 402| validityPeriod | number | 否 | 密码有效期(单位:毫秒)。 | 403| additionalDescription | string | 否 | 描述文本。 | 404 405## ClipboardPolicy 406 407设备剪贴板策略。 408 409**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager 410 411| 名称 | 值 | 说明 | 412| ----------- | -------- | ------------------------------- | 413| DEFAULT | 0 | 默认。 | 414| IN_APP | 1 | 剪贴板可在同一应用使用。 | 415| LOCAL_DEVICE | 2 | 剪贴板可在同一设备使用。 | 416| CROSS_DEVICE | 3 | 剪贴板可跨设备使用。 |