部署 Microsoft Windows 文件系统连接器

您可以将 Google Cloud 搜索设置为除了 Google Workspace 内容之外,还返回贵组织的 Microsoft Windows 共享内容中的搜索结果。您使用 Google Cloud Search 文件系统连接器,并将其配置为访问指定的 Windows 共享。单个连接器实例可以支持多个 Microsoft Windows 共享。

重要注意事项

持续自动更新

默认情况下,连接器在启动时会持续监控起始路径(连接器配置文件中的 fs.src 中的值)。当文件系统报告内容或访问控制的更改时,系统会触发连接器重新抓取文件系统。此重新抓取可能会占用大量资源。如需关闭文件系统监控,请将 fs.monitorForUpdates 设置为 false。您可以显著减少连接器的资源用量,但连接器反映更改的时间会延迟。了解详情

DFS 访问控制

DFS 系统会对其链接应用访问控制,通常每个 DFS 链接都有自己的 ACL。DFS 使用的一种机制是基于访问权限的枚举 (ABE),它可以限制向用户返回的 DFS 链接。当 ABE 隔离托管主目录时,用户可能只会看到一部分 DFS 链接,甚至可能只会看到一个链接。连接器遍历 DFS 系统时,会遵循 DFS 链接 ACL 和目标的共享 ACL,并且共享 ACL 会继承自 DFS ACL。

已知限制

  • 文件系统:文件系统连接器不支持映射驱动器和本地驱动器。
  • 分布式文件系统:映射到 UNC DFS 的驱动器无法正常工作。系统无法正确读取某些 ACL。
  • 文件系统连接器支持分布式文件系统 (DFS) 命名空间和链接。但它仅支持 DFS 命名空间中的 DFS 链接,而不支持 DFS 命名空间中的常规文件夹。
  • cloudsearch.google.com 中返回的文件链接不可点击。在大多数浏览器中,Query API 返回的文件链接也不可点击。

系统要求

系统要求
操作系统
  • Windows Server 2016
  • Windows Server 2012
  • Windows Server 2008 R2
软件
  • Java JRE 1.8(安装在将运行 Google Cloud Search 文件系统连接器的计算机上)
文件系统协议
  • 服务器消息块 (SMB) - SMB1
  • 服务器消息块 (SMB) - SMB2
  • 分布式文件系统 (DFS)

不支持:本地 Windows 文件系统、Sun 网络文件系统 (NFS) 2.0、Sun 网络文件系统 (NFS) 3.0 或本地 Linux 文件系统。

部署连接器

前提条件

在部署 Cloud Search 文件系统连接器之前,请确保您的环境具有以下所有必备组件:

所需的 Microsoft Windows 账号权限

运行连接器的 Microsoft Windows 账号必须具有足够的权限才能执行以下操作:

  • 列出文件夹的内容
  • 读取文档的内容
  • 读取文件的属性和文件夹的属性
  • 读取对文件和文件夹的权限 (ACL)
  • 写入基本特性权限

以下某个群组中的成员可为 Windows 账号授予连接器所需的足够权限:

  • 管理员
  • 高级用户
  • 打印操作员
  • 服务器操作员

第 1 步:安装 Google Cloud Search 文件系统连接器

  1. 从 GitHub 获取连接器代码库并进行构建。

    如需在 Windows 服务器上使用 git,请执行以下操作:

    1. 克隆代码库:

      > git clone https://github.com/google-cloudsearch/windows-filesystems-connector.git
      > cd windows-filesystems-connector
    2. 检出所需的连接器版本:

      > git checkout tags/v1-0.0.3

    如需直接从 GitHub 下载,请执行以下操作:

    1. 前往 https://github.com/google-cloudsearch/windows-filesystems-connector
    2. 依次点击克隆或下载 下载 ZIP
    3. 解压缩该软件包。
    4. 移动到新目录:
      > cd windows-filesystems-connector
  2. 构建连接器。如有必要,请安装 Apache Maven

    > mvn package

    如需在构建连接器时跳过测试,请运行 mvn package -DskipTests 而不是 mvn package

  3. 将连接器 zip 文件复制到本地安装目录:

    > cp target/google-cloudsearch-windows-filesystems-connector-v1-0.0.3.zip installation-dir
    > cd installation-dir
    > unzip google-cloudsearch-windows-filesystems-connector-v1-0.0.3.zip
    > cd google-cloudsearch-windows-filesystems-connector-v1-0.0.3

第 2 步:创建连接器配置文件

  1. 在连接器安装目录中,创建一个文件并将其命名为 connector-config.properties

  2. 将参数作为键值对添加到文件内容中,如以下示例所示:

    ### File system connector configuration ###
    
    # Required parameters for Cloud Search data source and identity source access
    api.serviceAccountPrivateKeyFile=/path/to/file.json
    api.sourceId=0123456789abcde
    api.identitySourceId=a1b1c1234567
    
    # Required parameters for file system access
    fs.src=\\\\host\\share;\\\\dfshost\\dfsnamespace;\\\\dfshost\\dfsnamespace\\link
    
    # Optional parameters for file system monitoring
    traverse.abortAfterExceptions=500
    fs.monitorForUpdates = true
    fs.preserveLastAccessTime = IF_ALLOWED
    

    如需详细了解每个参数,请参阅 配置参数参考

  3. (可选)根据需要配置其他连接器参数。如需了解详情,请参阅 Google 提供的连接器参数

第 3 步:启用日志记录

  1. 在包含连接器二进制文件的目录中创建一个名为 logs 的文件夹。
  2. 在包含连接器二进制文件的目录中创建一个名为 logging.properties 的 ASCII 或 UTF-8 文件,并添加以下内容:

    handlers = java.util.logging.ConsoleHandler,java.util.logging.FileHandler
    # Default log level
    .level = WARNING
    com.google.enterprise.cloudsearch.level = INFO
    com.google.enterprise.cloudsearch.fs.level = INFO
    
    # uncomment line below to increase logging level to enable API trace
    #com.google.api.client.http.level = FINE
    java.util.logging.ConsoleHandler.level = INFO
    java.util.logging.FileHandler.pattern=logs/connector-fs.%g.log
    java.util.logging.FileHandler.limit=10485760
    java.util.logging.FileHandler.count=10
    java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
    

第 4 步:(可选)配置媒体类型

默认情况下,连接器会尝试使用 JDK 提供的媒体类型检测功能来检测每个文件的媒体类型。在 Microsoft Windows 上,JDK 依赖于 Windows 注册表来确定文件的媒体类型。如果缺少注册表条目,可能会导致某些文件的媒体类型为 null。

如有必要,您可以指定一种媒体类型来覆盖任何现有绑定或防止使用 null 媒体类型。

  1. 在连接器目录中,创建一个名为 mime-type.properties 的拉丁 1 加密文件。
  2. 输入文件扩展名及其对应的媒体类型,如以下示例所示:

    xlsx=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    one=application/msonenote
    txt=text/plain
    pdf=application/pdf
    

第 5 步:运行文件系统连接器

安装并配置文件系统连接器后,如需在主机上启动该连接器,请运行类似以下示例的命令:

> java -jar google-cloudsearch-windows-filesystems-connector-v1-0.0.3.jar -Djava.util.logging.config.file=logging.properties[ -Dconfig=my.config]

如果配置文件路径与默认路径不同,请指定该路径(应与名为 connector-config.properties 的二进制文件位于同一目录中)。

配置参数参考

数据源访问权限

设置 参数
数据源 ID api.sourceId=1234567890abcdef

必需。由 Google Workspace 管理员设置的 Google Cloud Search 源 ID。

服务账号私钥文件的路径 api.serviceAccountPrivateKeyFile=./PrivateKey.json

必需。访问 Google Cloud Search 文件系统连接器所需的 Google Cloud Search 服务账号密钥文件。

身份源 ID api.identitySourceId=x0987654321

必需。由 Google Workspace 管理员设置的 Cloud Search 身份源 ID,用于通过 GCDS 同步 Active Directory 身份。

文件系统访问

设置 参数
源文件系统 fs.src=path1[,path2, ...]

必需。将源文件系统指定为一个或多个 UNC 源,这些源由 fs.src.separator 配置的分隔符分隔。如果使用未包含在 Latin1 中的字符,请使用 Java Unicode 转义符对其进行编码。

路径分隔符

设置 参数
路径分隔符 fs.src.separator=separator-character

默认分隔符为“;”。如果您的源路径包含英文分号,则可以设置其他分隔符(例如英文逗号“,”),该分隔符不得与路径中的字符冲突,并且没有被属性文件语法本身预留。

如果 fs.src.separator 值为空字符串,则 fs.src 值会被视为单个路径。

连接器行为

设置 参数
Windows 网域 fs.supportedDomain=domain

如要允许使用 GCDS 设置的用户通过 Cloud Search 访问文档,则此为必填参数。请将此参数指定为 Active Directory 的单个 NetBIOS 域名。

在 ACL 中添加账号 fs.supportedAccounts=account-1[, account-2,...]

以逗号分隔的账号列表,无论这些账号是否为内置账号,都将添加到 ACL 中。

默认值为 BUILTIN\\Administrators,Everyone,BUILTIN\\Users, BUILTIN\\Guest,NT AUTHORITY\\INTERACTIVE, NT AUTHORITY\\Authenticated Users

从 ACL 中排除内置账号 fs.builtinGroupPrefix=prefix

指定内置账号的前缀。以此前缀开头的账号会被视为内置账号,将会从 ACL 中排除。

默认值为 BUILTIN\\

允许将隐藏文件和隐藏文件夹编入索引 fs.crawlHiddenFiles=boolean

设置为 true 可允许连接器抓取隐藏文件和隐藏文件夹(在 Windows 文件系统上,如果设置了 DOS 隐藏属性,则认为文件或文件夹是隐藏的)。默认值为 false

允许将抓取的文件夹列表和 DFS 命名空间枚举编入索引 fs.indexFolders=boolean

如果设置为 true(默认值),当连接器抓取文件夹时,连接器会创建一个 CONTAINER_ITEM 对象。如果设置为 false,则该连接器会改为创建一个 VIRTUAL_CONTAINER_ITEM 对象。

启用文件系统更改监控功能 fs.monitorForUpdates=boolean

如果设置为 true(默认值),则对内容或访问控制进行的更改会触发关联器重新抓取。停用监控功能(设置为 false)可显著减少连接器的资源用量,但会延迟连接器反映更改的时间。

设置目录缓存的大小上限 fs.directoryCacheSize=number-of-entries

目录缓存的大小上限。连接器使用缓存来识别隐藏文件夹,以避免将隐藏文件夹中的文件和文件夹编入索引。

默认值为 50,000 个条目,通常占用 10-15 MB RAM。

时间戳保留和抓取控制

设置 参数
保留上次访问时间戳 fs.preserveLastAccessTime=value

连接器抓取文件和文件夹时,可以将文件和文件夹的上次访问时间戳更改为抓取时间。如果未保留上次访问时间,则备份和归档系统可能会因连接器的访问而未将相应文件和文件夹移至辅助存储空间。

默认情况下,连接器会尝试保留上次访问时间(将 fs.preserveLastAccessTime 设置为 ALWAYS)。如果遍历用户的权限不足,无法写入文件属性,连接器可能无法恢复文件的上次访问时间。设置为 ALWAYS 时,连接器会拒绝文件系统的抓取请求,以免更改文件的上次访问时间戳。

可能的值:

  • ALWAYS:在抓取文件和文件夹时,连接器会尝试保留上次访问时间。连接器首次无法保留上次访问时间时,会拒绝文件系统的所有后续抓取请求,以避免更改上次访问时间戳。
  • IF_ALLOWED:该连接器会在抓取文件和文件夹时尝试保留上次访问时间。即使某些时间戳可能无法保留,该工具也会继续抓取。
  • NEVER:在抓取文件和文件夹时,连接器不会尝试保留上次访问时间。
仅抓取在特定日期之后访问过的文件 fs.lastAccessedDate=YYYY-MM-DD

仅在内容的上次访问时间晚于指定日期时抓取内容。默认值为 disabled

请使用 ISO8601 日期格式 YYYY-MM-DD 指定日期。例如,如果该值为 2010-01-01,则连接器只会抓取 2010 年年初之后访问过的内容。

如果您指定了 fs.lastAccessedDate,则无法为 fs.lastAccessedDays 设置值。

仅抓取过去指定天数内访问过的文件 fs.lastAccessedDays=number-of-days

仅在内容上次访问时间在指定天数内时抓取内容。默认值为 disabled

您可以使用此属性使先前已编入索引且在一段时间内未访问过的内容失效。例如,将其设置为 365 表示仅抓取在过去一年内被访问过的内容。

如果您指定了 fs.lastAccessedDays,则无法为 fs.lastAccessedDate 设置值。

仅抓取在特定日期之后修改的文件 fs.lastModifiedDate=YYYY-MM-DD

仅抓取上次修改时间晚于指定日期的内容。默认值为 disabled

请使用 ISO8601 日期格式 YYYY-MM-DD 指定日期。例如,如果该值为 2010-01-01,则连接器只会抓取 2010 年年初之后修改过的内容。

如果您指定了 fs.lastModifiedDate,则无法为 fs.lastModifiedDays 设置值。

仅抓取过去指定天数内修改过的文件 fs.lastModifiedDays=number-of-days

仅在内容的上次修改时间在指定天数内时抓取内容。默认值为 disabled

您可以使用此属性使先前已编入索引且在一段时间内未修改过的内容失效。例如,将其设置为 365 表示仅抓取过去一年内修改过的内容。

如果您指定了 fs.lastModifiedDays,则无法为 fs.lastModifiedDate 设置值。

跳过文件共享访问控制

默认情况下,连接器在向 Indexing API 发送访问控制列表 (ACL) 时会保留访问控制完整性,包括文件共享的 ACL。不过,在某些配置中,连接器可能没有足够的权限来读取共享 ACL。在这些情况下,连接器不会在搜索结果中返回该文件共享中维护的任何文件。

您可以将连接器设置为忽略共享 ACL,以便始终在搜索结果中返回内容。在这种情况下,编制索引 API 会获得一个完全能够访问的共享 ACL,而不是实际的共享 ACL。

设置 参数
跳过文件共享访问控制 fs.skipShareAccessControl=boolean

设置为 false(默认)可强制执行共享 ACL。设置为 true 可忽略共享 ACL。