计算机世界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 的 问 题 与 我 们 进 行 探 讨 。