• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.enterprise.securityManager(安全管理)
2<!--Kit: MDM Kit-->
3<!--Subsystem: Customization-->
4<!--Owner: @huanleima-->
5<!--Designer: @liuzuming-->
6<!--Tester: @lpw_work-->
7<!--Adviser: @Brilliantry_Rui-->
8
9本模块提供设备安全管理的能力,包括查询安全补丁状态、查询文件加密状态等。
10
11> **说明:**
12>
13> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14>
15> 本模块接口仅可在Stage模型下使用。
16>
17> 本模块接口仅对设备管理应用开放,且调用接口前需激活设备管理应用,具体请参考[MDM Kit开发指南](../../mdm/mdm-kit-guide.md)。
18
19## 导入模块
20
21```ts
22import { securityManager } from '@kit.MDMKit';
23```
24
25## securityManager.uninstallUserCertificate
26
27uninstallUserCertificate(admin: Want, certUri: string): Promise&lt;void&gt;
28
29卸载用户证书,使用Promise异步回调。
30
31**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE
32
33**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
34
35**模型约束:** 此接口仅可在Stage模型下使用。
36
37**参数:**
38
39| 参数名  | 类型                                                    | 必填 | 说明                              |
40| ------- | ------------------------------------------------------- | ---- | --------------------------------- |
41| admin   | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 企业设备管理扩展组件。                    |
42| certUri | string                                                  | 是   | 证书uri,由安装用户证书接口[installUserCertificate](#securitymanagerinstallusercertificate)设置返回。 |
43
44**返回值:**
45
46| 类型                | 说明                                                         |
47| ------------------- | ------------------------------------------------------------ |
48| Promise&lt;void&gt; | 无返回结果的Promise对象。当卸载用户证书失败时会抛出错误对象。 |
49
50**错误码**:
51
52以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
53
54| 错误码ID | 错误信息                                                     |
55| -------- | ------------------------------------------------------------ |
56| 9200001  | The application is not an administrator application of the device. |
57| 9200002  | The administrator application does not have permission to manage the device. |
58| 9201001  | Failed to manage the certificate.                            |
59| 201      | Permission verification failed. The application does not have the permission required to call the API. |
60| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
61
62**示例:**
63
64```ts
65import { securityManager } from '@kit.MDMKit';
66import { Want } from '@kit.AbilityKit';
67import { BusinessError } from '@kit.BasicServicesKit';
68
69let wantTemp: Want = {
70  // 需根据实际情况进行替换
71  bundleName: 'com.example.myapplication',
72  abilityName: 'EntryAbility'
73};
74// 需根据实际情况进行替换
75let aliasStr = "certName";
76securityManager.uninstallUserCertificate(wantTemp, aliasStr).then(() => {
77  console.info(`Succeeded in uninstalling user certificate.`);
78}).catch((err: BusinessError) => {
79  console.error(`Failed to uninstall user certificate. Code is ${err.code}, message is ${err.message}`);
80});
81```
82
83## securityManager.installUserCertificate
84
85installUserCertificate(admin: Want, certificate: CertBlob): Promise&lt;string&gt;
86
87安装用户证书,使用Promise异步回调。
88
89**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE
90
91**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
92
93**模型约束:** 此接口仅可在Stage模型下使用。
94
95**参数:**
96
97| 参数名      | 类型                                                    | 必填 | 说明           |
98| ----------- | ------------------------------------------------------- | ---- | -------------- |
99| admin       | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 企业设备管理扩展组件。 |
100| certificate | [CertBlob](#certblob)                                   | 是   | 证书信息。证书文件应放在应用沙箱路径等应用有权限访问的路径下。     |
101
102**返回值:**
103
104| 类型                  | 说明                                                 |
105| --------------------- | ---------------------------------------------------- |
106| Promise&lt;string&gt; | Promise对象,返回当前证书安装后的uri,用于卸载证书。 |
107
108**错误码**:
109
110以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
111
112| 错误码ID | 错误信息                                                     |
113| -------- | ------------------------------------------------------------ |
114| 9200001  | The application is not an administrator application of the device. |
115| 9200002  | The administrator application does not have permission to manage the device. |
116| 9201001  | Failed to manage the certificate.                            |
117| 201      | Permission verification failed. The application does not have the permission required to call the API. |
118| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
119
120**示例:**
121
122<!--code_no_check-->
123```ts
124import { securityManager } from '@kit.MDMKit';
125import { common, Want } from '@kit.AbilityKit';
126import { BusinessError } from '@kit.BasicServicesKit';
127
128let wantTemp: Want = {
129  // 需根据实际情况进行替换
130  bundleName: 'com.example.myapplication',
131  abilityName: 'EntryAbility'
132};
133let certFileArray: Uint8Array = new Uint8Array();
134// 变量context需要在MainAbility的onCreate回调函数中进行初始化
135// test.cer需要放置在rawfile目录下
136// 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext
137const context = this.getUIContext().getHostContext() as common.UIAbilityContext;
138context.resourceManager.getRawFileContent("test.cer").then((value) => {
139  certFileArray = value;
140  securityManager.installUserCertificate(wantTemp, { inData: certFileArray, alias: "cert_alias_xts" })
141    .then((result) => {
142      console.info(`Succeeded in installing user certificate, result : ${JSON.stringify(result)}`);
143    }).catch((err: BusinessError) => {
144    console.error(`Failed to install user certificate. Code: ${err.code}, message: ${err.message}`);
145  })
146}).catch((err: BusinessError) => {
147  console.error(`Failed to get raw file content. message: ${err.message}`);
148  return;
149});
150```
151
152## securityManager.installUserCertificate<sup>18+</sup>
153
154installUserCertificate(admin: Want, certificate: CertBlob, accountId: number): string
155
156支持按系统账户安装用户证书。
157
158**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE
159
160**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
161
162**模型约束:** 此接口仅可在Stage模型下使用。
163
164**参数:**
165
166| 参数名      | 类型                                                    | 必填 | 说明           |
167| ----------- | ------------------------------------------------------- | ---- | -------------- |
168| admin       | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 企业设备管理扩展组件。 |
169| certificate | [CertBlob](#certblob)                                   | 是   | 证书信息。证书文件应放在应用沙箱路径等应用有权限访问的路径下。     |
170| accountId   | number                                                  | 是   | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 |
171
172**返回值:**
173
174| 类型                  | 说明                                                 |
175| --------------------- | ---------------------------------------------------- |
176| string      | 返回当前证书安装后的uri,用于卸载证书。 |
177
178**错误码**:
179
180以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
181
182| 错误码ID | 错误信息                                                     |
183| -------- | ------------------------------------------------------------ |
184| 9200001  | The application is not an administrator application of the device. |
185| 9200002  | The administrator application does not have permission to manage the device. |
186| 9201001  | Failed to manage the certificate.                            |
187| 201      | Permission verification failed. The application does not have the permission required to call the API. |
188
189**示例:**
190
191<!--code_no_check-->
192```ts
193import { securityManager } from '@kit.MDMKit';
194import { common, Want } from '@kit.AbilityKit';
195
196let wantTemp: Want = {
197  // 需根据实际情况进行替换
198  bundleName: 'com.example.myapplication',
199  abilityName: 'EntryAbility'
200};
201let certFileArray: Uint8Array = new Uint8Array();
202let accountId: number = 100;
203// 变量context需要在MainAbility的onCreate回调函数中进行初始化
204// test.cer需要放置在rawfile目录下
205// 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext
206const context = this.getUIContext().getHostContext() as common.UIAbilityContext;
207context.resourceManager.getRawFileContent("test.cer").then((value) => {
208  certFileArray = value;
209  try {
210    let result: string = securityManager.installUserCertificate(wantTemp, { inData: certFileArray, alias: "cert_alias_xts" }, accountId);
211    console.info(`Succeeded in installing user certificate. result: ${result}`);
212  } catch (err) {
213    console.error(`Failed to install user certificate. Code: ${err.code}, message: ${err.message}`);
214  }
215});
216```
217## securityManager.getUserCertificates<sup>18+</sup>
218
219getUserCertificates(admin: Want, accountId: number): Array&lt;string&gt;
220
221获取指定系统账户下的用户证书信息。
222
223**需要权限:** ohos.permission.ENTERPRISE_MANAGE_CERTIFICATE
224
225**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
226
227**模型约束:** 此接口仅可在Stage模型下使用。
228
229**参数:**
230
231| 参数名 | 类型                                                    | 必填 | 说明                                                         |
232| ------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
233| admin  | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 企业设备管理扩展组件。                                               |
234| accountId | number                                               | 是   | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 |
235
236**返回值:**
237
238| 类型   | 说明                 |
239| ------ | -------------------- |
240| Array&lt;string&gt; | 返回在指定用户ID下安装的所有用户证书。 |
241
242**错误码**:
243
244以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
245
246| 错误码ID | 错误信息                                                     |
247| -------- | ------------------------------------------------------------ |
248| 9200001  | The application is not an administrator application of the device. |
249| 9200002  | The administrator application does not have permission to manage the device. |
250| 201      | Permission verification failed. The application does not have the permission required to call the API. |
251
252**示例:**
253
254```ts
255import { securityManager } from '@kit.MDMKit';
256import { Want } from '@kit.AbilityKit';
257
258let wantTemp: Want = {
259  // 需根据实际情况进行替换
260  bundleName: 'com.example.myapplication',
261  abilityName: 'EntryAbility'
262};
263// 需根据实际情况进行替换
264let accountId: number = 100;
265try {
266  let result: Array<string> = securityManager.getUserCertificates(wantTemp, accountId);
267  console.info(`Succeeded in getting the uri list of user Certificates. result: ${JSON.stringify(result)}`);
268} catch (err) {
269  console.error(`Failed to get the uri list of user Certificates. Code: ${err.code}, message: ${err.message}`);
270}
271```
272
273## securityManager.getSecurityStatus
274
275getSecurityStatus(admin: Want, item: string): string
276
277获取当前设备安全策略信息。
278
279**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY
280
281**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
282
283**模型约束:** 此接口仅可在Stage模型下使用。
284
285**参数:**
286
287| 参数名 | 类型                                                    | 必填 | 说明                                                         |
288| ------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
289| admin  | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 企业设备管理扩展组件。                                               |
290| item   | string                                                  | 是   | 安全策略名称。<br/>- patch:设备安全补丁。<br/>- encryption:设备文件系统加密。 <!--RP1--><!--RP1End-->|
291
292**返回值:**
293
294| 类型   | 说明                 |
295| ------ | -------------------- |
296| string | 返回安全策略状态值。 |
297
298**错误码**:
299
300以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
301
302| 错误码ID | 错误信息                                                     |
303| -------- | ------------------------------------------------------------ |
304| 9200001  | The application is not an administrator application of the device. |
305| 9200002  | The administrator application does not have permission to manage the device. |
306| 201      | Permission verification failed. The application does not have the permission required to call the API. |
307| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
308
309**示例:**
310
311```ts
312import { securityManager } from '@kit.MDMKit';
313import { Want } from '@kit.AbilityKit';
314
315let wantTemp: Want = {
316  // 需根据实际情况进行替换
317  bundleName: 'com.example.myapplication',
318  abilityName: 'EntryAbility'
319};
320
321try {
322  let result: string = securityManager.getSecurityStatus(wantTemp, 'patch');
323  console.info(`Succeeded in getting security patch tag. tag: ${result}`);
324} catch (err) {
325  console.error(`Failed to get security patch tag. Code: ${err.code}, message: ${err.message}`);
326}
327```
328
329## securityManager.setPasswordPolicy
330
331setPasswordPolicy(admin: Want, policy: PasswordPolicy): void
332
333设置设备口令策略。
334
335**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY
336
337**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
338
339**模型约束:** 此接口仅可在Stage模型下使用。
340
341**参数:**
342
343| 参数名      | 类型                                       | 必填   | 说明                       |
344| -------- | ---------------------------------------- | ---- | ------------------------------- |
345| admin    | [Want](../apis-ability-kit/js-apis-app-ability-want.md)     | 是    | 企业设备管理扩展组件。                  |
346| policy | [PasswordPolicy](#passwordpolicy) | 是 | 设备口令策略。 |
347
348**错误码**:
349
350以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
351
352| 错误码ID | 错误信息                                                                       |
353| ------- | ---------------------------------------------------------------------------- |
354| 9200001 | The application is not an administrator application of the device.                        |
355| 9200002 | The administrator application does not have permission to manage the device. |
356| 201 | Permission verification failed. The application does not have the permission required to call the API. |
357| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
358
359**示例:**
360
361```ts
362import { securityManager } from '@kit.MDMKit';
363import { Want } from '@kit.AbilityKit';
364
365let wantTemp: Want = {
366  // 需根据实际情况进行替换
367  bundleName: 'com.example.myapplication',
368  abilityName: 'EntryAbility'
369};
370
371let policy: securityManager.PasswordPolicy = {
372  complexityRegex: '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*])[a-zA-Z\\d!@#$%^&*]{8,}$',
373  validityPeriod: 1,
374  additionalDescription: '至少八个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符',
375};
376try {
377    securityManager.setPasswordPolicy(wantTemp, policy);
378    console.info(`Succeeded in setting password policy.`);
379} catch(err) {
380    console.error(`Failed to set password policy. Code: ${err.code}, message: ${err.message}`);
381}
382```
383
384## securityManager.getPasswordPolicy
385
386getPasswordPolicy(admin: Want): PasswordPolicy
387
388获取设备口令策略。
389
390**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY
391
392**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
393
394**模型约束:** 此接口仅可在Stage模型下使用。
395
396**参数:**
397
398| 参数名      | 类型                                       | 必填   | 说明                       |
399| -------- | ---------------------------------------- | ---- | ------------------------------- |
400| admin    | [Want](../apis-ability-kit/js-apis-app-ability-want.md)     | 是    | 企业设备管理扩展组件。                  |
401
402**返回值:**
403
404| 类型                   | 说明                      |
405| --------------------- | ------------------------- |
406| [PasswordPolicy](#passwordpolicy) | 设备口令策略。 |
407
408**错误码**:
409
410以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
411
412| 错误码ID | 错误信息                                                                       |
413| ------- | ---------------------------------------------------------------------------- |
414| 9200001 | The application is not an administrator application of the device.                        |
415| 9200002 | The administrator application does not have permission to manage the device. |
416| 201 | Permission verification failed. The application does not have the permission required to call the API. |
417| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
418
419**示例:**
420
421```ts
422import { securityManager } from '@kit.MDMKit';
423import { Want } from '@kit.AbilityKit';
424
425let wantTemp: Want = {
426  // 需根据实际情况进行替换
427  bundleName: 'com.example.myapplication',
428  abilityName: 'EntryAbility'
429};
430
431try {
432    let result: securityManager.PasswordPolicy = securityManager.getPasswordPolicy(wantTemp);
433    console.info(`Succeeded in getting password policy, result : ${JSON.stringify(result)}`);
434} catch(err) {
435    console.error(`Failed to get password policy. Code: ${err.code}, message: ${err.message}`);
436}
437```
438
439## securityManager.setAppClipboardPolicy
440
441setAppClipboardPolicy(admin: Want, tokenId: number, policy: ClipboardPolicy): void
442
443设置设备剪贴板策略。
444
445**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY
446
447**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
448
449**模型约束:** 此接口仅可在Stage模型下使用。
450
451**参数:**
452
453| 参数名      | 类型                                       | 必填   | 说明                       |
454| -------- | ---------------------------------------- | ---- | ------------------------------- |
455| admin    | [Want](../apis-ability-kit/js-apis-app-ability-want.md)     | 是    | 企业设备管理扩展组件。                  |
456| tokenId | number | 是 | 目标应用的身份标识。可通过[bundleManager.getApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md)获取accessTokenId。当前只支持最多100个tokenId被保存策略。 |
457| policy | [ClipboardPolicy](#clipboardpolicy) | 是 | 剪贴板策略。 |
458
459**错误码**:
460
461以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
462
463| 错误码ID | 错误信息                                                                       |
464| ------- | ---------------------------------------------------------------------------- |
465| 9200001 | The application is not an administrator application of the device.                        |
466| 9200002 | The administrator application does not have permission to manage the device. |
467| 201 | Permission verification failed. The application does not have the permission required to call the API. |
468| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
469
470**示例:**
471
472```ts
473import { securityManager } from '@kit.MDMKit';
474import { Want } from '@kit.AbilityKit';
475
476let wantTemp: Want = {
477  // 需根据实际情况进行替换
478  bundleName: 'com.example.myapplication',
479  abilityName: 'EntryAbility'
480};
481// 需根据实际情况进行替换
482let tokenId: number = 586874394;
483try {
484    securityManager.setAppClipboardPolicy(wantTemp, tokenId, securityManager.ClipboardPolicy.IN_APP);
485    console.info(`Succeeded in setting clipboard policy.`);
486} catch(err) {
487    console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`);
488}
489```
490
491## securityManager.getAppClipboardPolicy
492
493getAppClipboardPolicy(admin: Want, tokenId?: number): string
494
495获取设备剪贴板策略。
496
497**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY
498
499**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
500
501**模型约束:** 此接口仅可在Stage模型下使用。
502
503**参数:**
504
505| 参数名      | 类型                                       | 必填   | 说明                       |
506| -------- | ---------------------------------------- | ---- | ------------------------------- |
507| admin    | [Want](../apis-ability-kit/js-apis-app-ability-want.md)     | 是    | 企业设备管理扩展组件。      |
508| tokenId | number | 否 | 目标应用的身份标识。可通过[bundleManager.getApplicationInfo](../apis-ability-kit/js-apis-bundleManager-applicationInfo.md)获取accessTokenId。当前只支持最多100个tokenId被保存策略。 |
509
510**返回值:**
511
512| 类型                   | 说明                      |
513| --------------------- | ------------------------- |
514| string | 返回JSON字符串形式的设备剪贴板策略。|
515
516**错误码**:
517
518以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
519
520| 错误码ID | 错误信息                                                                       |
521| ------- | ---------------------------------------------------------------------------- |
522| 9200001 | The application is not an administrator application of the device.                        |
523| 9200002 | The administrator application does not have permission to manage the device. |
524| 201 | Permission verification failed. The application does not have the permission required to call the API. |
525| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
526
527**示例:**
528
529```ts
530import { securityManager } from '@kit.MDMKit';
531import { Want } from '@kit.AbilityKit';
532
533let wantTemp: Want = {
534  // 需根据实际情况进行替换
535  bundleName: 'com.example.myapplication',
536  abilityName: 'EntryAbility'
537};
538// 需根据实际情况进行替换
539let tokenId: number = 586874394;
540try {
541    let result: string = securityManager.getAppClipboardPolicy(wantTemp, tokenId);
542    console.info(`Succeeded in getting password policy, result : ${result}`);
543} catch(err) {
544    console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`);
545}
546```
547
548## securityManager.setAppClipboardPolicy<sup>18+</sup>
549
550setAppClipboardPolicy(admin: Want, bundleName: string, accountId: number, policy: ClipboardPolicy): void
551
552设置指定用户下指定应用的设备剪贴板策略。当前只支持最多保存100个策略。
553
554**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY
555
556**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
557
558**模型约束:** 此接口仅可在Stage模型下使用。
559
560**参数:**
561
562| 参数名     | 类型                                                      | 必填  | 说明                                                                                                                                                        |
563| -------    | ------------------------------------------------------- | --- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
564| admin      | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 企业设备管理扩展组件。                                                                                                                                          |
565| bundleName | string                                                  | 是   | 被设置剪贴板策略的应用包名。                                                                                                                                      |
566| accountId  | number                                                  | 是   | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 |
567| policy     | [ClipboardPolicy](#clipboardpolicy)                     | 是   | 剪贴板策略。                                                                                                                                                    |
568
569**错误码**:
570
571以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
572
573| 错误码ID   | 错误信息                                                                                                                                            |
574| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
575| 9200001 | The application is not an administrator application of the device.                                                                              |
576| 9200002 | The administrator application does not have permission to manage the device.                                                                    |
577| 201     | Permission verification failed. The application does not have the permission required to call the API.                                          |
578
579**示例:**
580
581```ts
582import { securityManager } from '@kit.MDMKit';
583import { Want } from '@kit.AbilityKit';
584
585let wantTemp: Want = {
586  // 需根据实际情况进行替换
587  bundleName: 'com.example.myapplication',
588  abilityName: 'EntryAbility'
589};
590// 需根据实际情况进行替换
591let bundleName: string = 'com.example.myapplication';
592let accountId: number = 100;
593try {
594    securityManager.setAppClipboardPolicy(wantTemp, bundleName, accountId, securityManager.ClipboardPolicy.IN_APP);
595    console.info(`Succeeded in setting clipboard policy.`);
596} catch(err) {
597    console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`);
598}
599```
600
601## securityManager.getAppClipboardPolicy<sup>18+</sup>
602
603getAppClipboardPolicy(admin: Want, bundleName: string, accountId: number): string
604
605获取指定用户下指定应用的设备剪贴板策略。
606
607**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY
608
609**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
610
611**模型约束:** 此接口仅可在Stage模型下使用。
612
613**参数:**
614
615| 参数名     | 类型                                                      | 必填  | 说明                                                                                                                                                        |
616| -------    | ------------------------------------------------------- | --- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
617| admin      | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 企业设备管理扩展组件。                                                                                                                                               |
618| bundleName | string                                                  | 是   | 被设置剪贴板策略的应用包名。                                                                                                                            |
619| accountId  | number                                                  | 是   | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 |
620
621**返回值:**
622
623| 类型                                  | 说明       |
624| ----------------------------------- | -------- |
625| string | 返回JSON字符串形式的设备剪贴板策略。 |
626
627**错误码**:
628
629以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
630
631| 错误码ID   | 错误信息                                                                                                                                            |
632| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
633| 9200001 | The application is not an administrator application of the device.                                                                              |
634| 9200002 | The administrator application does not have permission to manage the device.                                                                    |
635| 201     | Permission verification failed. The application does not have the permission required to call the API.                                          |
636
637**示例:**
638
639```ts
640import { securityManager } from '@kit.MDMKit';
641import { Want } from '@kit.AbilityKit';
642
643let wantTemp: Want = {
644  // 需根据实际情况进行替换
645  bundleName: 'com.example.myapplication',
646  abilityName: 'EntryAbility'
647};
648// 需根据实际情况进行替换
649let bundleName: string = 'com.example.myapplication';
650let accountId: number = 100;
651try {
652    let result: string = securityManager.getAppClipboardPolicy(wantTemp, bundleName, accountId);
653    console.info(`Succeeded in getting password policy, result : ${result}`);
654} catch(err) {
655    console.error(`Failed to set clipboard policy. Code: ${err.code}, message: ${err.message}`);
656}
657```
658
659## securityManager.setWatermarkImage<sup>14+</sup>
660
661setWatermarkImage(admin: Want, bundleName: string, source: string | image.PixelMap, accountId: number): void
662
663给指定用户设置水印策略。当前只支持最多保存100个策略。
664
665**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY
666
667**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
668
669**模型约束:** 此接口仅可在Stage模型下使用。
670
671**参数:**
672
673| 参数名      | 类型                                       | 必填   | 说明                       |
674| -------- | ---------------------------------------- | ---- | ------------------------------- |
675| admin    | [Want](../apis-ability-kit/js-apis-app-ability-want.md)     | 是    | 企业设备管理扩展组件。      |
676| bundleName | string    | 是   | 被设置水印的应用包名。                                                       |
677| source | string \| [image.PixelMap](../apis-image-kit/arkts-apis-image-PixelMap.md)  | 是   | string表示图像路径,图像路径为应用沙箱路径等应用有权限访问的路径。<br>image.PixelMap表示图像对象,图像像素占用大小不能超过500KB。                                                       |
678| accountId     | number     | 是   | 用户ID。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 |
679
680**错误码**:
681
682以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
683
684| 错误码ID | 错误信息                                                                       |
685| ------- | ---------------------------------------------------------------------------- |
686| 9200001 | The application is not an administrator application of the device.                        |
687| 9200002 | The administrator application does not have permission to manage the device. |
688| 201 | Permission verification failed. The application does not have the permission required to call the API. |
689| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
690
691**示例:**
692
693```ts
694import { securityManager } from '@kit.MDMKit';
695import { Want } from '@kit.AbilityKit';
696
697let wantTemp: Want = {
698  // 需根据实际情况进行替换
699  bundleName: 'com.example.myapplication',
700  abilityName: 'EntryAbility'
701};
702// 需根据实际情况进行替换
703let bundleName: string = 'com.example.myapplication';
704let source: string = '/data/storage/el1/base/test.png';
705let accountId: number = 100;
706try {
707    securityManager.setWatermarkImage(wantTemp, bundleName, source, accountId);
708    console.info(`Succeeded in setting set watermarkImage policy.`);
709} catch(err) {
710    console.error(`Failed to set watermarkImage policy. Code: ${err.code}, message: ${err.message}`);
711}
712```
713
714## securityManager.cancelWatermarkImage<sup>14+</sup>
715
716cancelWatermarkImage(admin: Want, bundleName: string, accountId: number): void
717
718取消指定用户的水印策略。
719
720**需要权限:** ohos.permission.ENTERPRISE_MANAGE_SECURITY
721
722**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
723
724**模型约束:** 此接口仅可在Stage模型下使用。
725
726**参数:**
727
728| 参数名      | 类型                                       | 必填   | 说明                       |
729| -------- | ---------------------------------------- | ---- | ------------------------------- |
730| admin    | [Want](../apis-ability-kit/js-apis-app-ability-want.md)     | 是    | 企业设备管理扩展组件。        |
731| bundleName | string    | 是   | 被取消水印的应用包名。                                                       |
732| accountId     | number     | 是   | 用户ID。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。 |
733
734**错误码**:
735
736以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
737
738| 错误码ID | 错误信息                                                                       |
739| ------- | ---------------------------------------------------------------------------- |
740| 9200001 | The application is not an administrator application of the device.                        |
741| 9200002 | The administrator application does not have permission to manage the device. |
742| 201 | Permission verification failed. The application does not have the permission required to call the API. |
743| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
744
745**示例:**
746
747```ts
748import { securityManager } from '@kit.MDMKit';
749import { Want } from '@kit.AbilityKit';
750
751let wantTemp: Want = {
752  // 需根据实际情况进行替换
753  bundleName: 'com.example.myapplication',
754  abilityName: 'EntryAbility'
755};
756// 需根据实际情况进行替换
757let bundleName: string = 'com.example.myapplication';
758let accountId: number = 100;
759try {
760    securityManager.cancelWatermarkImage(wantTemp, bundleName, accountId);
761    console.info(`Succeeded in setting cancel watermarkImage policy.`);
762} catch(err) {
763    console.error(`Failed to cancel watermarkImage policy. Code: ${err.code}, message: ${err.message}`);
764}
765```
766
767## securityManager.setPermissionManagedState<sup>20+</sup>
768
769setPermissionManagedState(admin: Want, applicationInstance: ApplicationInstance, permissions: Array\<string>, managedState: PermissionManagedState): void
770
771设置指定应用的[user_grant权限](../../security/AccessToken/permissions-for-all-user.md)的管理策略。
772
773**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USER_GRANT_PERMISSION
774
775**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
776
777**模型约束:** 此接口仅可在Stage模型下使用。
778
779**参数:**
780
781| 参数名      | 类型                                       | 必填   | 说明                       |
782| -------- | ---------------------------------------- | ---- | ------------------------------- |
783| admin    | [Want](../apis-ability-kit/js-apis-app-ability-want.md)     | 是    | 企业设备管理扩展组件。      |
784| applicationInstance    | [ApplicationInstance](#applicationinstance20)  | 是 | 指定应用实例。 |
785| permissions | Array&lt;string&gt;  | 是 | 需要管理的权限名称列表,仅支持user_grant权限。 |
786| managedState | [PermissionManagedState](#permissionmanagedstate20) | 是 | 应用权限的管理策略。 |
787
788**错误码**:
789
790以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
791
792| 错误码ID | 错误信息                                                                       |
793| ------- | ---------------------------------------------------------------------------- |
794| 9200001 | The application is not an administrator application of the device.                        |
795| 9200002 | The administrator application does not have permission to manage the device. |
796| 9200010 | A conflict policy has been configured. |
797| 9200012 | Parameter verification failed. |
798| 201 | Permission verification failed. The application does not have the permission required to call the API. |
799
800**示例:**
801
802```ts
803import { Want } from '@kit.AbilityKit';
804import { securityManager } from '@kit.MDMKit';
805
806let wantTemp: Want = {
807  // 需根据实际情况进行替换
808  bundleName: 'com.example.myapplication',
809  abilityName: 'EntryAbility'
810};
811let appInstanceTemp: securityManager.ApplicationInstance = {
812      // 需根据实际情况进行替换
813      appIdentifier: '736498586',
814      appIndex: 0,
815      accountId: 100
816};
817let permissionsTemp: Array<string> = ['ohos.permission.CAMERA', 'ohos.permission.LOCATION'];
818try {
819    securityManager.setPermissionManagedState(wantTemp, appInstanceTemp, permissionsTemp, securityManager.PermissionManagedState.GRANTED);
820    console.info('Succeeded in setting permission managed state.');
821} catch(err) {
822    console.error(`Failed to set permission managed state.  Code: ${err.code}, message: ${err.message}`);
823}
824```
825
826## securityManager.getPermissionManagedState<sup>20+</sup>
827
828getPermissionManagedState(admin: Want, applicationInstance: ApplicationInstance, permission: string): PermissionManagedState
829
830获取指定应用的指定[user_grant权限](../../security/AccessToken/permissions-for-all-user.md)的管理策略。
831
832**需要权限:** ohos.permission.ENTERPRISE_MANAGE_USER_GRANT_PERMISSION
833
834**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
835
836**模型约束:** 此接口仅可在Stage模型下使用。
837
838**参数:**
839
840| 参数名      | 类型                                       | 必填   | 说明                       |
841| -------- | ---------------------------------------- | ---- | ------------------------------- |
842| admin    | [Want](../apis-ability-kit/js-apis-app-ability-want.md)     | 是    | 企业设备管理扩展组件。      |
843| applicationInstance  | [ApplicationInstance](#applicationinstance20)  | 是 | 指定应用实例。 |
844| permission | string | 是 | 需要获取管理策略的权限名称,仅支持user_grant权限。 |
845
846**返回值:**
847
848| 类型                   | 说明                      |
849| --------------------- | ------------------------- |
850| [PermissionManagedState](#permissionmanagedstate20) | 应用权限的管理策略。|
851
852**错误码**:
853
854以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
855
856| 错误码ID | 错误信息                                                                       |
857| ------- | ---------------------------------------------------------------------------- |
858| 9200001 | The application is not an administrator application of the device.                        |
859| 9200002 | The administrator application does not have permission to manage the device. |
860| 9200012 | Parameter verification failed. |
861| 201 | Permission verification failed. The application does not have the permission required to call the API. |
862
863**示例:**
864
865```ts
866import { Want } from '@kit.AbilityKit';
867import { securityManager } from '@kit.MDMKit';
868
869let wantTemp: Want = {
870  // 需根据实际情况进行替换
871  bundleName: 'com.example.myapplication',
872  abilityName: 'EntryAbility'
873};
874let appInstanceTemp: securityManager.ApplicationInstance = {
875      // 需根据实际情况进行替换
876      appIdentifier: '736498586',
877      appIndex: 0,
878      accountId: 100
879};
880let permissionTemp: string = 'ohos.permission.ENTERPRISE_MANAGE_USER_GRANT_PERMISSION';
881try {
882    let result: securityManager.PermissionManagedState = securityManager.getPermissionManagedState(wantTemp, appInstanceTemp, permissionTemp);
883    console.info(`Succeeded in getting permission managed state, result : ${result}`);
884} catch(err) {
885    console.error(`Failed to get permission managed state. Code: ${err.code}, message: ${err.message}`);
886}
887```
888
889## CertBlob
890
891证书信息。
892
893**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
894
895| 名称   | 类型       | 只读 | 可选 | 说明               |
896| ------ | ---------- | ---- | ---- | ------------------ |
897| inData | Uint8Array | 否   | 否 |证书的二进制内容。 |
898| alias  | string     | 否   | 否 |证书别名。         |
899
900## PasswordPolicy
901
902设备口令策略。
903
904**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
905
906| 名称         | 类型     | 只读 | 可选 | 说明                            |
907| ----------- | --------| ---- | ---- | --------------------------- |
908| complexityRegex | string | 否 | 是 | 口令复杂度正则表达式。 |
909| validityPeriod | number | 否 | 是 | 密码有效期(单位:毫秒)。 |
910| additionalDescription | string | 否 | 是 | 描述文本。 |
911
912## ClipboardPolicy
913
914设备剪贴板策略。
915
916**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
917
918| 名称         | 值 | 说明                            |
919| ----------- | -------- | ------------------------------- |
920| DEFAULT | 0  | 默认,表示无策略。 |
921| IN_APP | 1  | 剪贴板可在同一应用使用。 |
922| LOCAL_DEVICE | 2  | 剪贴板可在同一设备使用。 |
923| CROSS_DEVICE | 3  | 剪贴板可跨设备使用。 |
924
925## ApplicationInstance<sup>20+</sup>
926
927应用实例。
928
929**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
930
931**模型约束:** 此接口仅可在Stage模型下使用。
932
933| 名称         | 类型     | 只读 | 可选 | 说明                            |
934| ----------- | --------| ---- | ---- | --------------------------- |
935| appIdentifier | string | 否 | 否 | 应用[唯一标识符](../apis-ability-kit/js-apis-bundleManager-bundleInfo.md#signatureinfo),如果应用没有appIdentifier可使用appId代替,可以通过接口[bundleManager.getBundleInfo](../apis-ability-kit/js-apis-bundleManager.md#bundlemanagergetbundleinfo14-2)获取bundleInfo.signatureInfo.appIdentifierbundleInfo.signatureInfo.appId。|
936| accountId  | number     | 否 | 否 | 用户ID,指定具体用户,取值范围:大于等于0。accountId可以通过@ohos.account.osAccount中的[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9-1)等接口来获取。         |
937| appIndex  | number     | 否 | 否 | 表示分身应用的索引,默认值为0。<br> appIndex为0时,表示主应用。appIndex大于0时,表示指定的分身应用。        |
938
939## PermissionManagedState<sup>20+</sup>
940
941应用权限的管理状态。
942
943**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
944
945**模型约束:** 此接口仅可在Stage模型下使用。
946
947| 名称         | 值 | 说明                            |
948| ----------- | -------- | ------------------------------- |
949| DEFAULT | 1  | 默认由用户授予。 |
950| GRANTED | 0  | 已静默授予。 |
951| DENIED | -1  | 已静默拒绝。 |