#redact #google-cloud-platform #dlp #pii #file-copy #cloud-storage #cli-tool

app redacter

安全复制并编辑文件,删除跨各种文件系统中的个人身份信息(PII)的 Copy & Redact 命令行工具

13 个版本 (重大更改)

新功能 0.10.0 2024 年 8 月 22 日
0.8.2 2024 年 8 月 16 日

命令行工具 中排名 21

Download history 242/week @ 2024-07-31 251/week @ 2024-08-07 677/week @ 2024-08-14

每月下载量 1,170

Apache-2.0

275KB
6K SLoC

Cargo tests and formatting security audit

Redacter

Copy & Redact 命令行工具,安全复制并编辑文件,删除跨各种来源和目标中的个人身份信息(PII),并利用数据丢失预防(DLP)功能。

此工具本身不实现 DLP,而是依赖于外部模型,例如 Google Cloud Platform 的 DLP API。

redacter-demo

特性

  • 复制并编辑: 在复制文件时应用 DLP 编辑以保护敏感信息。
  • 多源和目标:
    • 本地文件系统
    • Google Cloud Storage (GCS)
    • Amazon Simple Storage Service (S3)
    • ZIP 文件
    • 剪贴板(文本内容和图片)
  • DLP 集成
    • Google Cloud Platform DLP 用于对
      • 文本、HTML、JSON 文件进行准确和可定制的编辑
      • 结构化数据表文件(csv)
      • 图像(jpeg、png、bpm、gif)
      • PDF 文件(作为图像渲染)
    • Microsoft Presidio 用于 PII 编辑(您可以在本地安装的开源项目)
      • 文本、HTML、csv、JSON 文件
      • 图像
      • PDF 文件(作为图像渲染)
    • GCP Vertex AI 基于编辑
      • 文本、HTML、csv、JSON 文件
      • 模型支持的图像
      • PDF 文件(作为图像渲染)
    • Gemini LLM 基于编辑
      • 文本、HTML、csv、JSON 文件
      • 模型支持的图像
      • PDF 文件(作为图像渲染)
    • Open AI LLM 基于编辑
      • 文本、HTML、csv、JSON 文件
      • 模型支持的图像
      • PDF 文件(作为图像渲染)
    • AWS Comprehend PII 编辑
      • 文本、HTML、csv、JSON 文件
      • 通过 OCR 文本提取进行图像
      • PDF 文件(从 OCR 作为图像渲染)
    • ... 未来可以添加更多 DLP 提供商。
  • CLI: 易于使用的命令行界面,简化工作流程。
  • 使用 Rust 构建,确保速度、安全和可靠性。

安装

二进制发布

GitHub 发布版 下载最新版本。

Cargo

cargo install redacter

可选功能安装

如果您计划使用 PDF 编辑,请遵循 PDF 编辑OCR 说明中的额外步骤。

命令行选项

从源复制并编辑文件到目标。

Usage: redacter cp [OPTIONS] <SOURCE> <DESTINATION>

Arguments:
  <SOURCE>       Source directory or file such as /tmp, /tmp/file.txt or gs://bucket/file.txt and others supported providers
  <DESTINATION>  Destination directory or file such as /tmp, /tmp/file.txt or gs://bucket/file.txt and others supported providers

Options:
  -m, --max-size-limit <MAX_SIZE_LIMIT>
          Maximum size of files to copy in bytes
  -n, --max-files-limit <MAX_FILES_LIMIT>
          Maximum number of files to copy. Sort order is not guaranteed and depends on the provider
  -f, --filename-filter <FILENAME_FILTER>
          Filter by name using glob patterns such as *.txt
  -d, --redact <REDACT>
          List of redacters to use [possible values: gcp-dlp, aws-comprehend, ms-presidio, gemini-llm, open-ai-llm, gcp-vertex-ai]
      --allow-unsupported-copies
          Allow unsupported types to be copied without redaction
      --gcp-project-id <GCP_PROJECT_ID>
          GCP project id that will be used to redact and bill API calls
      --gcp-dlp-built-in-info-type <GCP_DLP_BUILT_IN_INFO_TYPE>
          Additional GCP DLP built in info types for redaction
      --gcp-dlp-stored-info-type <GCP_DLP_STORED_INFO_TYPE>
          Additional GCP DLP user defined stored info types for redaction
      --gcp-region <GCP_REGION>
          GCP region that will be used to redact and bill API calls for Vertex AI
      --gcp-vertex-ai-native-image-support
          Vertex AI model supports image editing natively. Default is false.
      --gcp-vertex-ai-text-model <GCP_VERTEX_AI_TEXT_MODEL>
          Model name for text redaction in Vertex AI. Default is 'publishers/google/models/gemini-1.5-flash-001'
      --gcp-vertex-ai-image-model <GCP_VERTEX_AI_IMAGE_MODEL>
          Model name for image redaction in Vertex AI. Default is 'publishers/google/models/gemini-1.5-pro-001'
      --csv-headers-disable
          Disable CSV headers (if they are not present)
      --csv-delimiter <CSV_DELIMITER>
          CSV delimiter (default is ',')
      --aws-region <AWS_REGION>
          AWS region for AWS Comprehend DLP redacter
      --ms-presidio-text-analyze-url <MS_PRESIDIO_TEXT_ANALYZE_URL>
          URL for text analyze endpoint for MsPresidio redacter
      --ms-presidio-image-redact-url <MS_PRESIDIO_IMAGE_REDACT_URL>
          URL for image redact endpoint for MsPresidio redacter
      --gemini-model <GEMINI_MODEL>
          Gemini model name for Gemini LLM redacter. Default is 'models/gemini-1.5-flash'
      --sampling-size <SAMPLING_SIZE>
          Sampling size in bytes before redacting files. Disabled by default
      --open-ai-api-key <OPEN_AI_API_KEY>
          API key for OpenAI LLM redacter
      --open-ai-model <OPEN_AI_MODEL>
          Open AI model name for OpenAI LLM redacter. Default is 'gpt-4o-mini'
      --mime-override <MIME_OVERRIDE>
          Override media type detection using glob patterns such as 'text/plain=*.md'
  -h, --help
          Print help

DLP是可选的,需要使用--redact-d)选项来启用。如果没有启用DLP,工具将复制所有文件而不进行编辑。启用DLP后,工具将根据DLP模型编辑文件并跳过不支持的文件。

源和目标

源/目标可以是本地文件或目录,也可以是GCS、S3等存储中的文件

  • 本地文件:/tmp/file.txt/tmp表示整个目录递归复制
  • GCS:gs://bucket/file.txtgs://bucket/test-dir/表示整个目录递归复制
  • S3:s3://bucket/file.txts3://bucket/test-dir/表示整个目录递归复制
  • ZIP存档:zip://tmp/archive.zip
  • 剪贴板:clipboard://

DLP和编辑器

Google Cloud Platform DLP

要使用GCP DLP,您需要

  • 使用gcloud auth application-default login进行身份验证或通过GOOGLE_APPLICATION_CREDENTIALS环境变量提供服务帐户密钥。
  • 使用--gcp-project-id选项提供GCP项目ID。

此外,您还可以使用--gcp-dlp-stored-info-type选项提供用户定义的信息类型列表。

Microsoft Presidio

要使用Microsoft Presidio DLP,您需要有一个Presidio API的运行实例。您可以使用Docker在本地运行它或将它部署到您的基础设施中。您需要使用--ms-presidio-text-analyze-url--ms-presidio-image-redact-url选项提供文本分析和图像编辑端点的URL。

GCP Vertex AI

要使用GCP Vertex AI,您需要

  • 使用gcloud auth application-default login进行身份验证或通过GOOGLE_APPLICATION_CREDENTIALS环境变量提供服务帐户密钥。
  • 使用--gcp-project-id选项提供GCP项目ID。
  • 使用--gcp-region选项提供GCP区域。

您可以使用--gcp-vertex-ai-text-model--gcp-vertex-ai-image-model选项指定不同的模型。默认情况下,它们被设置为

  • publishers/google/models/gemini-1.5-flash-001作为文本模型
  • publishers/google/models/gemini-1.5-pro-001作为图像模型

如果您可以访问原生图像编辑模型,如Google Imagen 3,您可以使用--gcp-vertex-ai-native-image-support选项启用这些功能。如果没有原生图像支持,工具将使用LLM输出和通过坐标编辑图像。

Gemini LLM

请考虑使用Vertex AI编辑器而不是Gemini LLM以获得更多灵活性。

要使用Gemini作为DLP/编辑器,您需要

  • 使用以下命令进行身份验证:gcloud auth application-default login --client-id-file=<client_secret-file>.json,或者使用环境变量GOOGLE_APPLICATION_CREDENTIALS提供服务帐户密钥。请注意,您还需要根据官方说明配置OAuth设置。
  • 使用--gcp-project-id选项提供GCP项目ID。

Open AI LLM

要使用Open AI LLM,您需要使用--open-ai-api-key命令行选项提供API密钥。可选地,您还可以使用--open-ai-model选项提供模型名称。默认为gpt-4o-mini

AWS Comprehend

要使用AWS Comprehend DLP,您需要使用aws configure进行身份验证或提供服务帐户。要提供AWS区域,请使用--aws-region选项,因为AWS Comprehend可能不在所有区域可用。AWS Comprehend DLP仅适用于非结构化文本文件。

多个编辑器

您可以使用--redact选项多次指定多个编辑器。工具将按照指定的编辑器顺序应用编辑。当指定多个编辑器时,工具首先尝试使用支持输入文件的原生编辑器编辑文件。如果不存在此类编辑器,工具将尝试使用转换的编辑器编辑文件。

PDF编辑

PDF编辑支持将PDF文件作为图像渲染并编辑。为此,工具使用外部库Pdfium(由Google Chromium项目使用的C++ PDF库)来渲染和转换PDF文件。此库需要单独安装到您的系统上。

安装说明

  • 从例如这里下载适用于您的系统的最新版本:Pdfium版本
  • 解压缩存档并将库文件libpdfium.so复制到以下目录之一
    • 编辑器工具安装的路径(例如/usr/local/bin
    • 如果您已将工具安装到/usr/local/bin,则与编辑器工具位于同一路径下的/usr/local/lib/
    • 包含系统库的路径,如/usr/lib/

如果库检测正确,它将在工具输出中报告。

PDF到图像支持:✓ 是

OCR

该工具使用ocrs引擎支持图像和PDF文件的OCR。要启用OCR,您需要下载OCR模型

并将这些文件复制到~/.cache/ocrs目录。

示例

# Copy and redact a file from local filesystem to GCS
redacter cp -d gcp-dlp --gcp-project-id <your-gcp-project-with-dlp> sensitive.png gs://my-bucket-name/test/test.png  

该工具支持从目录递归复制多个文件

redacter cp s3://my-bucket-name/sensitive-files/ tmp/

也支持压缩存档

redacter cp gs://my-bucket-name/sensitive-files/ zip://tmp/sensitive-files.zip

按名称过滤文件

redacter cp -f "*.jpg" ...

和/或按大小

redacter cp -m 1024 ...

MS Presidio编辑器

redacter cp -d ms-presidio --ms-presidio-text-analyze-url https://127.0.0.1:5002/analyze --ms-presidio-image-redact-url https://127.0.0.1:5003/redact ...

根据文件名覆盖媒体类型

redacter cp --mime-override "text/plain=*.bin" ...

从剪贴板编辑图像

redacter cp clipboard:// tmp/image/ ...

列表(LS)命令

为了方便,该工具还支持列出源目录中的文件,以便您可以查看将要复制的文件

Usage: redacter ls [OPTIONS] <SOURCE>

Arguments:
  <SOURCE>  Source directory or file such as /tmp, /tmp/file.txt or gs://bucket/file.txt and others supported providers

Options:
  -m, --max-size-limit <MAX_SIZE_LIMIT>    Maximum size of files to copy in bytes
  -f, --filename-filter <FILENAME_FILTER>  Filter by name using glob patterns such as *.txt
  -h, --help                               Print help

示例:列出GCS存储桶中的文件

redacter ls gs://my-little-bucket/my-big-files/

安全注意事项

  • 您的文件内容将被发送到DLP API进行编辑。请确保您信任DLP API提供商。
  • 编辑的准确性取决于DLP模型,因此不要将其作为唯一的安全措施。
  • 该工具主要设计用于内部编辑文件。不建议在没有适当的安全措施和人工审查的情况下在公共环境中使用。
  • 由于数据丢失防护(DLP)的实施细节,无法保证文件完整性。一些格式,如HTML/XML/JSON,由于被视为文本,在编辑后可能会损坏。
  • 使用本工具需自行承担风险。作者不对任何数据丢失或安全漏洞负责。

Google Cloud Platform DLP因其准确性和可定制性而推荐,它是市场上最先进的DLP之一。目前LLM模型中的图像编辑准确性不高,但文本编辑相当不错。

为了最大程度地保护,您可以使用从最准确到最不准确顺序排列的多个DLP提供商。

许可证

Apache软件许可(ASL)

作者

Abdulla Abdurakhmanov

依赖项

~160MB
~2.5M SLoC