1# 设置分布式文件数据等级 2<!--Kit: Core File Kit--> 3<!--Subsystem: FileManagement--> 4<!--Owner: @wangke25; @gsl_1234; @wuchengjun5--> 5<!--Designer: @gsl_1234; @wangke25--> 6<!--Tester: @liuhonggang123; @yue-ye2; @juxiaopang--> 7<!--Adviser: @foryourself--> 8 9不同设备本身的安全能力差异较大,一些小的嵌入式设备安全能力远弱于平板等设备类型。用户或者应用不同的文件数据有不同安全诉求,例如个人的健康信息和银行卡信息等不期望被弱设备读取。因此,OpenHarmony提供一套完整的数据分级、设备分级标准,并针对不同设备制定不同的数据流转策略,具体规则请参见[数据、设备安全分级](../database/access-control-by-device-and-data-level.md)。 10 11## 接口说明 12 13API详细介绍请参见[ohos.file.securityLabel](../reference/apis-core-file-kit/js-apis-file-securityLabel.md)。 14 15**表1** 设置文件数据等级,其中“√”表示支持。 16 17| 接口名 | 功能 | 接口类型 | 支持同步 | 支持异步 | 18| -------- | -------- | -------- | -------- | -------- | 19| setSecurityLabel | 设置文件安全标签。 | 方法 | √ | √ | 20| getSecurityLabel | 获取文件安全标签。 | 方法 | √ | √ | 21 22> **须知:** 23> 24> 1. 对于不满足安全等级的文件,跨设备仍然可以看到该文件,但是无权限打开访问该文件。 25> 26> 2. 分布式文件系统的数据等级默认为S3,应用可以主动设置文件的安全等级。 27 28## 开发示例 29 30获取通用文件沙箱路径,并设置数据等级标签。示例中的context的获取方式请参见[获取UIAbility的上下文信息](../application-models/uiability-usage.md#获取uiability的上下文信息)。 31 32 33```ts 34import { securityLabel } from '@kit.CoreFileKit'; 35import { BusinessError } from '@kit.BasicServicesKit'; 36import { common } from '@kit.AbilityKit'; 37import { fileIo as fs } from '@kit.CoreFileKit'; 38 39// 获取需要设备数据等级的文件沙箱路径,请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext 40let context = this.getUIContext().getHostContext() as common.UIAbilityContext; 41let pathDir = context.filesDir; 42let filePath = pathDir + '/test.txt'; 43 44//打开文件 45let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); 46// 设置文件的数据等级为s0 47securityLabel.setSecurityLabel(filePath, 's0').then(() => { 48 console.info('Succeeded in setSecurityLabeling.'); 49 fs.closeSync(file); 50}).catch((err: BusinessError) => { 51 console.error(`Failed to setSecurityLabel. Code: ${err.code}, message: ${err.message}`); 52}); 53``` 54