文檔水印可以幫助您保護企業文檔的版權、防止文檔泄露等。在使用文檔水印時,您需要將SASE提供的文檔水印SDK嵌入到業務服務器上,或者將文檔水印SDK部署成API服務供業務調用集成,在發生信息泄露時,可以通過水印信息定位出泄露人員。本文介紹如何使用文檔水印功能。
當前支持在文檔上嵌入明水印和暗水印。
如果嵌入的是明水印,可以直接在文檔上看到明水印信息,定位泄露人員。
如果嵌入的是暗水印,無法通過肉眼直接看到暗水印信息,所以您需要在SASE控制臺上提取暗水印信息,然后定位出泄露人員。
而大部分發生信息泄露或者版權糾紛等都是暗水印場景。
不同文檔類型支持的能力說明
文件類型支持DOCX、PPTX、XLSX、PDF、DOC、PPT、XLS7種類型,支持的能力如下:
常規暗水?。▽傩裕┰谖臋n屬性中增加水印信息,可以抵抗文檔增、刪、改、另存(文檔格式不變)攻擊,不能抵抗格式轉換攻擊。
常規暗水印(零寬)在文檔內容中增加水印信息,可以抵抗文檔增、刪、改、另存(文檔格式不變)、部分文本復制粘貼,不能抵抗格式轉換為PDF,可以抵抗格式轉化為TXT。
常規暗水?。ńM件)可以抵抗文檔增、刪、改、另存(文檔格式不變)、DOCX全選復制拷貝到新DOCX文檔,但不能抵抗格式轉換攻擊。
背景明水印可以抵抗截圖攻擊、格式轉換攻擊,明水印內容是通過肉眼確認的,無需提取接口。
背景暗水印可以抵抗截圖攻擊、格式轉換攻擊,經過格式轉換的文檔提取水印需要通過截圖提取。
文件類型 | 常規暗水印 屬性 | 背景明水印 | 背景暗水印 | 常規暗水印 組件 | 常規暗水印 零寬 |
DOCX | 支持 | 支持 | 支持 | 支持 | 支持 |
PPTX | 支持 | 支持 | 支持 | 不支持 | 不支持 |
XLSX | 支持 | 支持 | 支持 | 不支持 | 不支持 |
支持 | 支持 | 支持 | 不支持 | 不支持 | |
DOC | 支持 | 不支持 | 不支持 | 不支持 | 不支持 |
PPT | 支持 | 不支持 | 不支持 | 不支持 | 不支持 |
XLS | 支持 | 不支持 | 不支持 | 不支持 | 不支持 |
操作流程
前提條件
已購買文檔水印服務。具體信息,請參見數字水印計費概述。
文檔集成明暗水印
步驟一:下載文檔水印SDK包
登錄辦公安全平臺控制臺。
在嵌入服務頁面,單擊文檔水印操作列下載SDK,將文檔水印SDK壓縮包下載到本地。并且保存AK和SK信息。
當前只支持Java語言。
下載的SDK壓縮包中包含如下內容:
watermark-normaldocument-v1.2.8.jar:集成水印的SDK包,需要添加到Maven倉庫。
nomalDocumentDemo:文檔水印的Demo,您可以通過Demo進行體驗。
步驟二:集成SDK
添加JAR包依賴(Maven)。
添加watermark-normaldocument-v1.2.2.jar依賴。
mvn install:install-file -Dfile=watermark-normaldocument-v1.2.8.jar -DgroupId=com.aliyun.security.sase -DartifactId=watermark-normaldocument -Dversion=v1.2.8 -Dpackaging=jar
在pom.xml文件中添加以下依賴。
<dependency> <groupId>com.aliyun.security.sase</groupId> <artifactId>watermark-normaldocument</artifactId> <version>v1.2.8</version> </dependency> <dependency> <groupId>net.java.dev.jna</groupId> <artifactId>jna</artifactId> <version>5.13.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-excelant</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>ooxml-schemas</artifactId> <version>1.3</version> <exclusions> <exclusion> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> </exclusion> </exclusions> </dependency>
調用文檔水印接口。
初始化AK、SK。
/** * 初始化 ak sk * @param appKey 應用密鑰Key * @param secret 應用密鑰Secret * @param useLocalConfig 是否使用本地配置 0:遠程配置(需要聯網) 1:本地配置 */ WaterMarkUtils.init(appKey, secret, useLocalConfig);
在文檔上添加數字水印。
方式一:添加水印后生成新的文檔
ParamsFile paramsFile = new ParamsFile(); //明水印參數(必須):{"invisibleAntiTextCopy":"true","invisibleAntiAllCopy":"true","backgroundControl":{"bgAddVisible":"true","bgVisibleControl":{"visibleText":"阿里巴巴明水印TEST123","mode":"pos","fontSize":"30","fontColor":"0x000000","fontTransparent":"0.2","angle":"30","pos_x":"0.5","pos_y":"0.5","fontPath":"/tmp/AlibabaPuHuiTi-2-45-Light.ttf"},"bgAddInvisible":"true","bgInvisibleControl":{"invisibleTransparent":"0.03"}}} paramsFile.setVisibleParam(visibleParam); //目標文件路徑 paramsFile.setDestFilePath(dest); //源文件路徑 paramsFile.setSrcFilePath(src); //水印數字,范圍1~4294967295 paramsFile.setMsgNum(msgNum); /** * 添加水印到文件 * @param baseParam * @return * @throws NormalDocumentException errorCode 異常碼 errorMessage 異常信息 參考《錯誤碼》 * @throws IOException */ WaterMarkUtils.WatermarkFile(paramsFile);
方式二:在原文檔上添加水印并輸出字節數組
ParamsBytes paramsBytes = new ParamsBytes(); //設置源文件字節數組 paramsBytes.setSrcFileBytes(srcFileBytes); //文件名稱,根據文件名獲取文件類型 paramsBytes.setFileName("234.doc"); //明水印參數:{"invisibleAntiTextCopy":"true","invisibleAntiAllCopy":"true","backgroundControl":{"bgAddVisible":"true","bgVisibleControl":{"visibleText":"阿里巴巴明水印TEST123","mode":"pos","fontSize":"30","fontColor":"0x000000","fontTransparent":"0.2","angle":"30","pos_x":"0.5","pos_y":"0.5","fontPath":"/tmp/AlibabaPuHuiTi-2-45-Light.ttf"},"bgAddInvisible":"true","bgInvisibleControl":{"invisibleTransparent":"0.03"}}} paramsBytes.setVisibleParam(visibleParam); //水印數字,范圍1~4294967295 paramsBytes.setMsgNum(msgNum); /** * 添加水印并返回目標文件字節數組 * @param baseParam * @return * @throws NormalDocumentException errorCode 異常碼 errorMessage 異常信息 參考《錯誤碼》 * @throws IOException */ byte[] destFileBytes = WaterMarkUtils.WatermarkFile(paramsFile);
參數說明
visibleParam
該參數用于控制水印功能。如:可以控制暗水印是否開啟、背景圖明水印形式和樣式、及背景圖暗水印強度、背景明水印、背景暗水印是否開啟。
傳入時使用JSON字符串的壓縮即可,無需換行、縮進或空格。JSON字符串中的key和value均為string類型,即需要用英文引號,不使用其他類型。如果JSON中的key和value,在 SDK中無此功能,則不生效。
例如“invisibleAntiTextCopy”和“invisibleAntiAllCopy”僅對DOCX文檔有效,若在PPTX、XLSX、PDF中傳入此參數,則不生效,也不會報錯。
{
"invisibleAntiTextCopy": "true",
"invisibleAntiAllCopy": "true",
"backgroundControl": {
"bgAddVisible":"true",
"bgVisibleControl": {
"visibleText":"阿里巴巴明水印TEST123",
"mode":"pos",
"fontSize":"30",
"fontColor":"0x000000",
"fontTransparent":"0.2",
"angle":"30",
"pos_x":"0.5",
"pos_y":"0.5",
"fontPath":"/tmp/AlibabaPuHuiTi-2-45-Light.ttf"
},
"bgAddInvisible":"true",
"bgInvisibleControl": {
"invisibleTransparent":"0.03"
}
}
}
其中每個參數的含義:
名稱 | 類型 | 必填 | 描述 | 示例值 |
invisibleAntiTextCopy | String | 是 | 控制零寬字符暗水印是否開啟的控制字段。取值:
| true |
invisibleAntiAllCopy | String | 是 | 控制組件暗水印是否開啟的控制字段。取值:
| true |
backgroundControl | JSON | 是 | 控制背景水印JSON對象,參考《bgVisibleControl參數的含義》 | JSON對象 |
bgAddVisible | String | 是 | 控制背景明水印是否開啟的控制字段。取值:
| true |
bgVisibleControl | String | 是 | 控制背景明水印 | value為對象 |
visibleText | String | 是 | 明水印文字內容 | 阿里巴巴明水印TEST123 |
mode | String | 是 | 明水印模式,有兩種pos和repeat,
| pos" |
fontSize | String | 是 | 明水印文字字號,值越大,明水印文字越大,為正整型數。 | 30 |
fontColor | String | 是 | 明水印文字顏色,是一個十六進制的像素值內容,順序是RGB,例如0xFF00F0,其中FF是R像素值,00是G像素值,F0是B像素值。 | 0x000000 |
fontTransparent | String | 是 | 明水印文字透明度,可選值為0~1之間的浮點數。 | 0.2 |
angle | String | 是 | 明水印文字逆時針傾斜角度,可選值為0~360之間的整型數。0表示不傾斜。 | 30 |
pos_x | String | 是 | 位置模式專用的控制明水印水平位置的參數,以左下角為原點。數值在0~1之間時,為比例控制,數值大于1時,為精確的像素位置控制。 | 0.5 |
pos_y | String | 是 | 位置模式專用的控制明水印垂直位置的參數,以左下角為原點。數值在0~1之間時,為比例控制,數值大于1時,為精確的像素位置控制。 | 0.5 |
fontPath | String | 是 | 背景明水印字體路徑,控制明水印字體樣式。相對路徑和絕對路徑均可。 | /tmp/AlibabaPuHuiTi-2-45-Light.ttf |
bgAddInvisible | String | 是 | 控制背景暗水印是否開啟
| true |
bgInvisibleControl | String | 是 | 控制背景暗水印的key | value為對象 |
invisibleTransparent | String | 是 | 背景暗水印的強度,0~0.05 超過范圍,則強行取默認值為0.02 | 0.03 |
bgVisibleControl
名稱 | 類型 | 必填 | 描述 | 示例值 |
horizonNumber | String | 是 | 平鋪模式專用,表示明水印在水平方向上重復出現的次數,為整型數。 | 2 |
verticalNumber | String | 是 | 平鋪模式專用,表示明水印在垂直方向上重復出現的次數,為整型數。 | 2 |
提取暗水印信息
已獲取嵌入暗水印信息的外泄文檔、外泄文檔的截圖。
步驟一:創建提取任務
登錄辦公安全平臺控制臺。
在提取服務頁面,單擊創建提取任務,提取外泄文檔的暗水印內容。
配置項
說明
水印版本
選擇使用的水印版本。取值:
常規:支持提取AI合成外的常規文件。
AIGC:支持提取的AI合成的文件。
水印類型
選擇文檔水印。
嵌入水印信息位寬
設置水印信息的位寬,位寬需要與透明水印底圖的SDK位寬(默認為32位)保持一致。
上傳待提取水印文件
根據界面提示,上傳獲取到的泄露文件。
步驟二:查看提取結果
水印任務創建完成后,您需要待提取成功后,查看提取結果,獲取暗水印原文。
在提取服務頁面,單擊提取信息列展示。
在展開的信息中,您可以提取到暗水印原文(十進制數字)。
溯源泄露人員
將提取的暗水印原文和您業務中使用的映射服務或者自定義的映射表進行對應,從而定位出具體的泄露人員。
例如,您提取的暗水印原文是123456,映射表中123456對應的是張三,則定位出泄露人員是員工張三。