计算机世界1999年第1期

ACCESS数据库的安全系统


安福国际保安设备公司计算机及通讯部 于德水 毛永生

  Access 是MicroSoft 公 司 始 于1994 年 发 表 的 微 机 数 据 库 管 理 系 统。 作 为 一 种 功 能 强 大 的MIS 系 统 开 发 工 具, 它 具 有 界 面 友 好, 易 学 易 用, 开 发 简 单, 接 口 灵 活 等 特 点, 是 一 个 典 型 的 新 一 代 数 据 管 理 和 信 息 系 统 开 发 工 具。 与Microsoft 的 其 他 数 据 库 产 品 如FOXPRO 等 相 比,Access 具 有 较 独 特 的 优 势- 提 供 了 更 强 大 的 数 据 组 织, 用 户 管 理, 安 全 检 查 等 功 能。 在 一 个 工 作 组 级 别 的 网 络 环 境 中, 使 用Access 开 发 的 多 用 户 数 据 库 管 理 系 统 具 有 传 统 的 XBASE 数 据 库 系 统 所 无 法 比 拟 的 客 户 服 务 器(Cient/Server) 结 构 和 相 应 的 数 据 库 安 全 机 制。 本 文 拟 就Access 数 据 库 系 统 的 网 络 应 用 及 安 全 机 制 做 较 深 入 的 探 讨。

  建 立Access 的 安 全 系 统

  1. 创 建Access 工 作 组

  一 个Access 工 作 组 定 义 为 一 组 用 户, 他 们 共 享 一 个 或 多 个Access 应 用 程 序, 并 且 在 他 们 的Access 副 本 中 附 加 公 共 的SYSTEM.MDA 库。 由Access 的 系 统 管 理 员(Admin 用 户) 来 给 这 些 用 户 授 予 对 数 据 库 系 统 的 相 应 的 操 作 权 限, 这 样, 不 同 的 用 户 就 能 以 不 同 的 权 限 访 问 相 关 的 数 据 库 资 源, 而 在XBASE 系 统 中, 要 实 现 这 样 的 功 能 需 要 数 据 库 开 发 人 员 在 编 程 中 实 施 控 制, 且 不 十 分 完 善。

  Access 提 供 了 一 个 新 的 应 用 程 序 Microsoft Access Workgroup Administrator, 它 能 自 动 完 成Access 工 作 组 的 创 建 工 作。 对 一 个 工 作 组 而 言,Access 系 统 管 理 员 需 要 用 这 个 程 序 创 建 一 个 新 的SYSTEM.MDA( 或 用 其 他 任 意 的 文 件 名:*.MDA) 库, 并 把 工 作 组 中 的 每 个 用 户 的Access 指 向 这 个 新 的SYSTEM.MDA。 可 以 这 样 理 解, 一 个 系 统 数 据 库 *.MDA 对 应 一 个 工 作 组。

  2. 创 建 工 作 组 中 的Access 帐 户

  Access 帐 户 包 括Access 组 与Access 用 户。 一 个Access 组 由 一 个 或 多 个Access 用 户 成 员 构 成。 在Access 的 安 装 过 程 中,Access 自 动 默 认 建 立 了 两 个 用 户 组(Admins 与Users) 和 一 个 用 户(Admin), 这 两 个 用 户 组 与ADMIN 用 户 是 不 允 许 删 除 的。 以Admins 用 户 组 中 的 用 户 ( 如:Admin) 登 录 (LOGON) 进 入Access 后, 可 以 创 建 新 的Access 组 与 用 户, 并 将 新 用 户 放 置 到 相 应 的 组 中。

  Admins 组 是Access 的 管 理 员 组, 缺 省 时 只 包 括Admin 用 户, 该 组 中 的 用 户 默 认 对 数 据 库 具 有 全 权, 并 且 可 以 管 理 其 他 的 用 户 和 用 户 组。Users 组 是Access 的 缺 省 用 户 组, 每 个 用 户, 包 括Admin 及 新 建 用 户 都 属 于 该 组, 缺 省 时,Users 组 中 的 用 户 对 数 据 库 也 具 有 全 权。

  3. 设 置Admin 用 户 的 登 录 口 令

  Admin 用 户 的 登 录 口 令 是 整 个 数 据 库 系 统 的 安 全 入 口, 为 什 么 这 样 说 呢 ? 因 为 如 果 没 有Admin 登 录 口 令, 所 有 用 户 的Access 副 本 均 以Admin 用 户 的 身 份 登 录 数 据 库, 而 不 是 以Access 管 理 员 所 创 建 的 用 户 名 进 行 登 录, 只 有 设 置 了Admin 的 登 录 口 令,Access 才 启 动 它 的 安 全 系 统, 这 也 就 是 为 什 么 无 法 删 除Admin 用 户 的 原 因。

  4. 分 配 数 据 库 权 限

  数 据 库 权 限 是 针 对 某 个 具 体 的 数 据 库 而 言 的。Access 系 统 管 理 员(Admins 组 中 的 一 个 用 户) 在 打 开 一 个 需 要 工 作 组 共 享 的 数 据 库 之 后, 就 可 以 根 据 具 体 情 况 对 工 作 组 中 的Access 组 与Access 用 户 进 行 权 限 的 分 配 了。 不 同 的Access 数 据 库 对 象 具 有 不 同 的 权 限 集 合,Access 的 数 据 库 对 象 包 括 六 种, 分 别 是 表、 查 询、 表 单、 报 表、 宏 和 模 块, 必 须 分 别 予 以 授 权。

  对Access 组 的 授 权 适 用 于 该 组 中 的 每 一 个 用 户。

  在 这 里 需 要 强 调 指 出 的 是: 必 须 首 先 屏 蔽Users 组 对 数 据 库 的 所 有 权 限, 前 面 讲 过, 所 有Access 用 户 都 属 于Users 组, 而Users 组 缺 省 是 对 数 据 库 对 象 是 具 有 全 权 的, 所 以 在 做 具 体 数 据 库 的 权 限 之 前, 必 须 首 先 将 它 的 所 有 权 限 屏 蔽 掉。 我 们 不 理 解 为 什 么 微 软 要 给 Users 组 对 数 据 库 的 全 部 许 可 权, 从 工 作 实 践 中 我 们 认 为 这 是 一 个 错 误, 它 毫 无 意 义 的 增 加 了Access 管 理 员 的 工 作 强 度 与 难 度( 因 为 经 常 会 有 忘 记 屏 蔽Users 组 权 限 而 使 整 个 安 全 系 统 形 同 虚 设 的 事 情 发 生)。 我 们 认 为 Users 组 对 数 据 库 对 象 应 缺 省 为 具 有 最 低 的 权 限, 这 样 是 最 有 效 的 和 安 全 的。

  至 此, 整 个Access 数 据 库 系 统 的 安 全 机 制 已 基 本 建 立 起 来 了( 工 作 流 程 详 见 附 图1,2)。 但 是, 这 样 的 数 据 库 系 统 就 是 真 正 安 全 的 吗 ? 还 不 是, 因 为Access 安 全 系 统 本 身 有 一 个 很 大 的 漏 洞, 如 果 不 设 法 堵 住 这 个 漏 洞, 在 某 些 情 况 下,Access 系 统 管 理 员 精 心 建 立 起 来 的 安 全 系 统 将 变 得 毫 无 意 义。 下 面, 我 们 将 具 体 讨 论Access 安 全 系 统 漏 洞 产 生 的 原 因 以 及 相 应 的 解 决 办 法。

  消 除Access 的 安 全 漏 洞

  1. 由Admin 用 户 引 发 的 安 全 漏 洞

  为 什 么Access 系 统 存 在 安 全 漏 洞 呢 ? 这 要 从Admin 用 户 说 起。 我 们 知 道,Admin 用 户 是Access 系 统 的 缺 省 用 户, 也 就 是 说, 除 非 你 的Access 系 统 在 安 装 后 已 经 重 新 链 接 到 了 某 个 新 的 工 作 组 安 全 系 统 上, 你 将 以 默 认 的Admin 用 户 登 录Access。 而 微 软 将 其 用 于 标 记 该Admin 帐 户 的 用 户ID 号 设 成 了 一 个 固 定 值, 这 就 意 味 着 全 世 界 的Access 系 统 的Admin 用 户 在Access 中 都 是 同 一 个 用 户。 这 样, 问 题 就 出 现 了  如 果 一 个 未 链 入 你 的 工 作 组 安 全 系 统 的 用 户 在 网 络 文 件 系 统 级 别 上 可 以 获 得 对 你 的 数 据 库 系 统 文 件 的Admin 权, 他 将 以Admin 用 户 的 身 份 拥 有 对 该 数 据 库 系 统 的 所 有 权 利 ! 由Access 本 身 建 立 起 来 的 第 二 级 安 全 机 制 将 不 起 任 何 作 用. 这 种 情 况 实 在 太 容 易 发 生  工 作 组 用 户 只 要 在 他 的 计 算 机 上 重 新 安 装 一 次Access 软 件, 他 将 会 轻 而 易 举 地 避 开 你 设 置 的 安 全 系 统 的 防 护, 而 做 为 默 认 的Admin 用 户 簦 录 并 操 作 工 作 组 中 任 何 数 据 库 系 统。

  2. 解 决 方 案

  如 何 解 决 由Admin 用 户 所 引 发 的 安 全 漏 洞 呢? 在 市 面 上 有 关Access 的 参 考 书 籍 中 很 难 找 出 答 案。 实 践 中, 我 们 总 结 出 了 一 套 行 之 有 效 的 解 决 方 案, 现 提 出 来 供 大 家 参 考。

  我 们 的 基 本 思 路 就 是 屏 蔽Admin 用 户 对 数 据 库 的 所 有 权 限, 首 先, 在Admins 用 户 组 中 增 加 一 个 新 的 与Admin 用 户 等 同 的 新 用 户, 例 如 为搘ww", 然 后 以 这 个 新 用 户 登 录Access, 从Admins 用 户 组 将Admin 用 户 撤 出, 并 屏 蔽 掉Admin 用 户 对 数 据 库 的 所 有 权 限, 这 样,Admin 用 户 就 成 为 了 一 个 普 通 用 户, 实 际 的 数 据 库 系 统 管 理 员 则 变 为 新 用 户(www), 而 你 的 数 据 库 安 全 系 统 就 对 所 有 的 用 户 起 安 全 防 护 作 用 了。 具 体 的 实 施 细 节 请 参 考 附 图3。

  结 束 语

  尽 管Access 系 统 存 在 着 某 些 安 全 漏 洞, 但 它 仍 不 失 为 微 机 平 台 上 一 个 优 秀 的 数 据 库 管 理 系 统, 在 工 作 组 级 或 部 门 级 的 数 据 库 应 用 领 域, 采 用Access 开 发 的 数 据 库 系 统 将 会 真 正 实 现 以 往 只 有 用 大 型 数 据 库 管 理 系 统 如Oracle 等 才 能 开 发 出 的 客 户/ 服 务 器 模 式 的 数 据 库 应 用 程 序, 同 时, 经 过 修 正 的Access 安 全 系 统 也 会 使 数 据 库 管 理 员 在 数 据 库 的 网 络 安 全 方 面 高 枕 无 忧。 由 于 国 内 对Access 的 应 用 起 步 较 晚, 有 关 的 技 术 资 料 也 比 较 缺 乏, 这 在 一 定 程 度 上 制 约 了Access 这 样 一 个 优 秀 的 数 据 库 产 品 的 应 用, 我 们 希 望 通 过 本 文 能 够 抛 砖 引 玉, 使 国 内 用 户 能 进 一 步 的 认 识、 了 解 和 使 用Access, 使 国 内 微 机 平 台 上 出 现 更 多 的 用Access 开 发 的 数 据 库 产 品。

  本 文 中 的 所 有 操 作 均 已 在Netware4.1/MS NT 网 络 环 境 下 的Access for Windows95 , Access for Windows3.x 系 统 上 实 现, 欢 迎 对 此 有 兴 趣 的 同 志 就 有 关Access 的 问 题 与 我 们 进 行 探 讨 。

back.gif (1185 字节)