利用 Microsoft Office 环境的安全数据输入过程

Secure data entry process utilizing Microsoft Office environment

我正在尝试找到一种使用 Microsoft Office(不能使用 Azure)创建安全数据输入流程的方法。显而易见的方法是使用 Microsoft Forms,但由于需要输入超过 150 个数据点,因此表格会太大。

我创建了一个 Excel 文件,该文件能够加载对 SharePoint 列表的响应。只要列表是 public 并且查看者有贡献权限,这就有效。这样做的缺点是数据不安全,任何人都可以查看列表。数据有 phone 号码、ssn、护照等。我试图通过创建一个流程来解决这个问题,该流程捕获任何新条目并将它们移动到我的个人私有 SharePoint 列表,然后删除原始条目。这很好用,但在与我的同事进行测试后,似乎任何人都可以加入第一个团队并与该团队进行相同的流程以自己捕获数据。

有没有办法在内部接受来自任何人的数据,同时又阻止他们访问数据?我能够使用 SharePoint、Teams、Power Automate 和 Access 来完成此任务。我不太熟悉访问,但以前使用过它。我只是不确定它有多安全。

我很乐意根据需要提供更多信息。谢谢

您可以考虑访问表单,然后让 table 驻留在 SharePoint 上。

然后您可以说基于查询的表单,并且在该查询中您可以提供(拥有)用户名作为查询 where 子句的一部分(因此用户删除或更改表单过滤器将只提供他们自己的数据的视图。)。但是,如果他们启动 Access(甚至 Excel),这样的用途最终可能会看到 table 中的所有行,而不是 Access 查询将数据限制为(一个用户)。

对 Access 桌面不满意?和大多数桌面软件一样?好吧,目标、设计和历史是为了方便数据编辑和查看。所以,就像你走进银行排队等候一样?好吧,当您到达出纳员时,他们会启动一个基于类似系统的访问表单并提取您的帐户信息。任何出纳员都可以 see/view 提取数据,因为这是软件应该做的,而且做得很好。 (获取任何客户数据)。

现在,翻转这个问题,创建一个用户网上银行系统,甚至是一个即时出纳员。现在问题倒退了。该软件的目标不是在 table 中轻松编辑数据,而是只允许用户查看他们的数据。这是一个非常不同的问题。

非常(非常)注意到 Web 开发工具不会突然或自动将数据限制为仅一个用户。做出该选择的是开发人员。那么,如果我们可以按下按钮并将访问表单转换为 Web 呢?好吧,那么访问表单就可以在生活中发挥作用。该工作是允许您编辑 table 中的所有数据。不只是您的数据。

例如,您是否编写过仅显示每个用户自己的数据的 Access 应用程序?我打赌不会!这很难做到。 (因为 Access 的根源是易于编辑数据)。如前所述,我不能强调 Web 开发工具做同样的事情。他们可以让您编辑数据。因此,数据编辑是一个软件问题和开发问题。数据系统还是Access甚至SQL服务器?他们只是持有数据。您的软件必须决定只显示一个用户的数据。

现在网络系统经常只显示您的数据。但这种非常常见的情况是由于网络系统的性质,你不是银行出纳员,也不是公司员工,而是该系统的消费者。现在每个消费者都 100% 与大多数软件系统的自然行为相反(即从 table 获取数据)。

所以,我怎么强调这个概念都不为过。这个概念是网络软件和系统不会为您限制数据选择。您的开发人员工具必须具有这种能力,并且还可以选择如何构建此类系统。

出于多种原因,Web 系统可以更好地限制数据。

一大原因?好吧,大多数时候您采用某种安全和登录系统。 因此,网站的某些部分现在根据您的登录系统受到限制。 (嘿,也许你使用 Facebook 登录)。所以网络系统有一个非常好的和广泛的支持某种登录系统的系统。对于桌面软件?没那么多。

但是即使有那种非常强大的安全系统和登录系统?

开发人员仍然必须选择他们看到的数据。也许是路上的旅行推销员。因此,该网络系统的每个用户仍然必须能够编辑、查看并将客户添加到该系统。这种常见情况与编辑数据的典型 Access 表单并没有什么不同。

因此只有某些类型的 Web 应用程序需要将数据限制为仅登录用户。但是,因为网络系统有那个“更好”的登录系统?然后你开发人员现在可以使用该登录来限制数据比桌面软件开发工具通常提供的更容易(比如访问)。

因此,其中很大一部分将归结为所使用的网络工具。如果您使用 Excel 或 Access 提取数据?然后,提取属于给定用户的 JUST 数据要困难得多。您的软件从第一天起就需要在设计时考虑到这些限制。

再次,冒着重复自己的风险?

这些工具不会为您设置数据限制。如果您只需要给定用户的安全数据,那么您只需要采用一组考虑到这一概念的开发人员工具。这往往意味着您使用的工具在默认情况下不允许用户直接编辑或 link 一些包含所有用户数据的大 table 数据。

这也是为什么说用 VB6 编写的程序,或者现在 vb.net 可以比 Access 更安全。 (因为默认情况下,这些工具不提供从第一天起就设计用于编辑所有数据行的表单)。因此,UI 不提供默认表单和让用户能够编辑所有行的东西。作为结果,那么软件现在可以控制用户看到的记录,因为他们没有允许查看所有行的默认表单。

因此,编写只分发自己数据的软件变得更加实用。但同样,我不能强调这一点:

选择要显示的数据是软件开发人员的选择 - 而不是数据库或 Web 开发工具。

因此按理说,您必须选择合适的工具,让您能够编写将数据限制在您需要的范围内的软件。

关于 SO 的关于什么口味的冰淇淋或使用什么开发工具的一般问题往往不受欢迎,并且非常违反解决您所拥有的软件和代码问题的一般规则 post 在 SO.

但是,如果你来自说 Access with VBA 技能?那么我建议采用 Visual Studio 的免费版本,并使用 vb.net + asp.net 网络表单。 Web 表单已接近生命周期的尽头,但它们是迄今为止最好的选择,最省力(来自 Access),并且将为您提供一个强大的安全模型,您可以在其中基于每个用户限制数据。

我不会放弃磁带并尝试将这样的系统与办公工具拼凑在一起,因为它们并不是真正为限制您需要的那种类型的数据而设计的。因此,使用一些高质量的网络工具,如 Visual Studio(免费版很好)并使用 SQL 服务器(又是免费版)才是正确的选择。如果您需要用卡车代替汽车,请选择合适的卡车,不要尝试使用汽车来运输货物,或者在这种情况下构建一个安全的 Web 数据库系统。