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