美文网首页
ArcGIS | 加密File GDB的许可导入

ArcGIS | 加密File GDB的许可导入

作者: 12ebfd5642fe | 来源:发表于2017-08-01 17:34 被阅读152次

    在写完本文之后,突然意识到用程序自动分发加密数据库本质上是个伪需求,或者说它的意义不大。加密数据库的使用场景其实极为有限,理论上不能满足严格的数据保密要求,实际上也无法满足授权用户的很多使用需求。

    例如,加密后的File Geodatabase理论上是可以在由ArcGIS Engine开发的程序中使用的,但稍微想一下就会发现,这里面存在悖论:

    • 如果能获得每条数据的信息,那么这个程序可以再次导出成非加密的数据格式,则失去了加密的意义;
    • 如果不能获得每条数据的信息,那么这个程序除了看看图,其实也做不了什么功能。

    实际测试结果,用AO的代码可以获得每条数据的属性信息,但无法获得空间坐标信息,shape为null。同理,用Server发服务应该也存在类似的限制。可见这种加密只针对空间信息,并没有彻底保护属性信息(当然属性信息只要能看见,理论上还可以拍照或手抄)。另外,基于同样的逻辑,File GDB API自然也无法访问空间信息,只是不知道能不能读到属性信息。

    我认为,这个加密功能的设计定位于分享地图(或者说底图)的同时保护数据,而数据的属性信息只是为了地图的呈现效果而附带的信息,并不在被保护的范围。

    我又要走极端了,信息要么完全开放,要么极端封闭。俗话说,有两个人知道的就不是秘密。又要保密,又要开放的做法,真的很符合国情。


    大约从10.3开始ArcGIS可以对File Geodatebase进行加密分发,操作步骤参考:如何为文件型地理数据库(File Geodatabase)进行加密。这里生成的.licdef文件大约等同于私钥,.sdlic文件大约等同于公钥。

    私钥自己要保护好,公钥当然是连同加密后的FGDB一起分发给用户使用。每个用户的机器都需要导入公钥,手动导入的基本方式是在ArcGIS Administrator程序中操作的(如下图)。

    其实,在ArcGIS Desktop安装时就将.sdlic文件关联到了C:\Program Files (x86)\Common Files\ArcGIS\bin\ArcGISAdmin.exe,因此双击.sdlic文件也是一样的。

    许可管理器,不是许可服务器

    但是如何用静默(命令)的方式将数据许可导入呢?这样才可以用程序直接操作,简化用户操作步骤。

    既然.sdlic文件存在关联,直接执行它当然可以,它背后的命令也很简单:ArcGISAdmin.exe /LIF abc.sdlic
    但会遇到两个问题:

    1. 需要管理员权限(弹出个对话框让你点确定);
    2. 运行完成后,上图的许可管理器会显示出来(我没找到静默的参数,这个程序没有/h,各种/s /qb都没效果)。

    管理员权限的问题蛮复杂,我猜应该是无法解决的,如果解决了,理论上可能就不安全了。

    后面这个问题,倒是有个workaround,根据stackexchange这篇帖子,ArcGIS Server中提供了一个DataLicInstall.exe程序(应该是为那些只安装Server的用户准备的),而这个程序执行时没有界面。

    上面的文章中提到,对于只安装了Desktop的用户,可以将DataLicInstall.exe复制到Program Files (x86)\ArcGIS\Desktop10.5\bin64目录下,照样可以用。

    如何在C#中执行呢?
    根据csdn这篇帖子,可以用ShellExecute来执行。
    ShellExecute(IntPtr.Zero, "runas", @"C:\Program Files (x86)\ArcGIS\Desktop10.5\bin64\DataLicInstall.exe", @"D:\abc_Protected.sdlic", "", 0);
    另外也测试了用Process类,但总会显示一个cmd对话框,用CreateNoWindow = true无法消除。
    当然这些方式调用ArcGISAdmin.exe也是可以的,但都会打开许可管理器界面。

    另外,当启动进程本身就具有管理员权限时,上面这两种调用方法,无论有没有runas动作,都会出问题,许可都不能正常导入,我猜应该和系统安全有些关系。

    相关文章

      网友评论

          本文标题:ArcGIS | 加密File GDB的许可导入

          本文链接:https://www.haomeiwen.com/subject/cbejlxtx.html