Win 10 新基础架构安全特性解读

在近期的 TechNet 上,Win 10 的系统安全指引中说明了这样一个东西 Device Guard.
按照 TechNet 的说明,Device Guard 是一个软硬结合的安全特性,组合使用时可以锁定设备并让它只运行可信的应用。如果应用不可信就不可以运行,即便是周期性的。这也意味着即使有黑客获取了 Windows 的内核控制权,在计算机重启之后也极大可能无法运行恶意可执行代码,因为这一特性设计的如此:
Device Guard 使用了全新的基于虚拟化的安全防护来从 Windows 内核中分离编码集成 (Code Integrity)服务,让这个服务使用由企业控制分发的签名来决定哪些是可信的。实际上,编码集成 (Code Integrity)服务独立于内核运行在一个被保护的管理程序容器中。
提到的另一个根本点是思路的转变,从传统的每一个程序都可以运行直到被反病毒程序或者其他安全措施隔离掉,变成企业内部控制的只运行可信软件的方式。

Device Guard
for Windows 10
Device Guard
for Windows 10
+ Virtualization extensions
Helps provide strong malware protection with enterprise manageability

在企业管理下帮助提供高等级恶意软件防护

X X
Helps provide the most advanced malware protection ever offered on the Windows platform帮助提供在 Windows 平台下至今最强大的恶意软件防护 X
Offers improved tamper resistance提供增强的干扰防护 X

DeviceGuard 的作用原理

DeviceGuard 通过限制 Windows 10 操作系统运行可信程序提供保护,这一功能基于企业的指定的硬件和安全配置策略,包括如下方面:

  • 用户模式代码集成
  • 新的内核代码集成规则(包括新的Windows硬件质量实验室 WHQL 签名)
  • 数据库控制的安全启动
  • 可选:基于虚拟化的安全措施帮助保护内存、内核程序以抵抗潜在威胁
  • 可选:可信平台模块2.0 TPM 2.0

DeviceGuard 可以和镜像制作一起配合使用,所以你可以为兼容设备开启虚拟化安全特性、配置代码集成策略以及其他系统设置来满足安全需求,设置完成之后 DeviceGuard 可以按照如下方式保护设备:

  1. 使用 UEFI 设备并且通过 SecureBoot 启动的,那么其他的 boot 套件在 Windows 10 启动之前无法使用
  2. 安全启动 Windows 10 boot 套件之后,Windows 10 就可以启动基于 Hyper-V 的安全服务,包括内核代码集成等,这些服务保护系统内核、验证过的驱动以及反病毒解决方案,可以阻止恶意代码在 boot 进程的早期阶段就开始有所作用
  3. DeviceGuard 使用 UMCI 确保在用户模式运行的任何服务,如统一平台应用、典型的 windows 程序等可信的二进制文件执行
  4. 同时在 Windows 启动后,TPM 也已经启动

DeviceGuard 的软硬件需求:

  • Windows 10 操作系统:最低需求,新特性仅在 Windows 10 具备
  • UEFI: 已有很长时间的技术,参考 secure boot 相关技术
  • TrustedBoot: UEFI 中的一种特定技术
  • Virtualization-based security:基于Hyper-V 的容器,感知 Windows 10 的进程,得益于容器技术和 hypervisor 的特性,即便内核被控制也具备保护能力

重要注意:使用该技术需要开启虚拟化扩展

  • Package inspector tool:一种可以创建目录清单要求这些典型 windows 程序提供可信签名的工具

2015.08.07补充一个 Win8.1 及之后的 Windows 启动的过程图解:

Win10BootProcess

  1. UEFI 启动:防止未知的操作系统启动
  2. 第2步是整个的蓝色大框,内核载入前期就要加载的反病毒措施,检查第三方驱动和启动代码
  3. TPM 记录启动中的计量数据
  4. 反病毒软件可以根据 TPM 计量数据向远程验证中心证明客户端是否健康,注意用词是健康而不是安全,安全是一个最低程度的健康标准;健康在 server 环境中经常用到,用来表明客户端除了安全之外,是否升级到最新的版本,是否安装了指定的补丁以及是否处于正常的生命周期等等。

继续阅读“Win 10 新基础架构安全特性解读”

CentOS7 安装 ruby

不知何故在 CentOS 7 上死活找不到最新的 2.2 stable 的 ruby 版本,于是就准备手动 make 安装;

按照官网的 https://www.ruby-lang.org/en/documentation/installation/ 的说明也没有什么大坑,但是最终还是没有安装上,报错 cannot install gem bundles lack of zlib ,但是 zlib 是存在的,按照网上的其他方法把需要的几个库都带上一起装了还是报这个错,装的库有

 # yum install openssl* openssl-devel zlib-devel gcc gcc-c++ make autoconf readline-devel curl-devel expat-devel gettext-devel 

后来觉得是否因为编译的文件路径有问题,于是在 configure 的时候加上如下参数:

 # ./configure --enable-shared --enable-pthread 

然后再次 make install ,成功了。但是需要手动加入路径才能直接使用 ruby 命令:

 # echo "PATH=$PATH:/usr/local/ruby/bin;export PATH" 
 # source /etc/profile 

其他如 SELinux 的问题没有出现,所以也不需要关掉。

Excel 自动填充日期

最近也是跟 Excel 干上了,现在来说个自动填充日期的技巧:

场景:

有这样的一个表格,每天都需要使用,同时每天的日期也应当是最新的,那么如何保持日期自动获取当天的日期呢?

ExcelToday

使用 Today 函数 功能,因为 Today 只能返回一个值,为了实现上图的效果,还要结合 Text 函数,

=”2015 年 “&TEXT( TODAY(),”m 月 d 日”)

首先使用 Today() 获取日期值,这个值包含了 年、月、日、时、分、秒;但是这里只需要 月 和 日,所以在 “”里只引用了月和日的格式,这里的格式可以参照单元格格式中的样例使用,全部处理好之后再接上 Text 函数转为文本格式显示,这样 “” 里面的格式才有用,否则只会显示 Today 默认显示的一串值,之前的“2015年”没有从 Today 函数中取值是因为空格和间距的问题,比如可以加上“XXXX公司2015年”,”XXXX公司“不好从 Today 中取值,所以就拿到前面来单独写好了。

Excel 解决包含空格的连续数字提取

我们在处理 Excel 文件的时候,经常会碰到类似下图这样的情况:应该是连续的一段字符串,但是被人为的分割了,解决这个问题需要两个操作:

带有空格的文本

1.根据空格使用分列操作,步骤在 数据 ——分列;

Capture1

2.使用字符串的合并功能,使用函数 concatenate,把刚才分列好的单元格进行合并,因为这个功能是针对字符串的,所以要先将合并的单元格格式设置成文本;然后就搞定了。

Capture3

 

rhel5/centos5 GPT 分区安装

redhat/centos 5.X 系列,在安装的时候如果磁盘分区是 GPT 会出现提示

Your boot partition is on a disk using GPT  partitioning scheme but this machine cannot boot using GPT

一下是官方给出的解决办法:

把安装光盘插入,进入救援模式 (rescue) , 在磁盘上 /dev/sda,不是分区上 /dev/sda1 执行命令:

dd if=/dev/zero of=/dev/sda bs=1024 count=1024

然后重启,使用刚刚创建的小分区为 /boot 分区进行安装,按照提示会要求进行初始化,直接初始化即可。

原因:

boot 磁盘必须使用 DOS MBR 格式的分区表,也就是不能超过 2.2 TB,这个问题在之后的 6.X 中解决了,5.X 不提供 GPT 解决。

清理inactive内存

cat /proc/meminfo 可以看到 inactive 的大小,如果很大的时候可以进行回收,网上有一条命令:

free && sync && echo 3 > /proc/sys/vm/drop_caches && echo “” && free

这个命令的主要部分是:

sync --数据写入硬盘

/proc/sys/vm/drop_caches --分成3个等级,一般是3

To free pagecache:

# echo 1 > /proc/sys/vm/drop_caches

To free dentries and inodes:

# echo 2 > /proc/sys/vm/drop_caches

To free pagecache, dentries and inodes:

echo 3 > /proc/sys/vm/drop_caches

这条命令下去之后如果内存占用还是很高,需求另外判断情况。

任务驱动的用户界面

最近思考了很多关于如何设计一个简洁的、移动的 OA 系统,或者说是 BPM 系统,在尝试了各种不同风格的软件之后,我产生了对于任务驱动的好感。这里先翻译一篇国外关于用户界面上采用任务驱动来设计的文章,先从用户界面这个小的尺度来推敲任务驱动的核心是什么。

原文载于 http://www.uxmatters.com ,作者是 Oleksandr Sukholeyster,原文链接 http://www.uxmatters.com/mt/archives/2014/12/task-driven-user-interfaces.php


 

拥有 IT 部门的组织比没有的组织更有效率,实际上,如果你的组织没有有效地维护软件并且使软件更高效地提供服务,钱就打了水漂。

在与用户进行会话的过程中,用户体验在消费类应用程序的影响是显而易见的,但是对于企业类软件却并非如此。对于不是软件公司的那些组织来说,使用软件自动化业务的进程往往是非常缓慢的。然而,企业应用在用户体验上的效果直接作用于企业和组织的表现上。如果一个企业雇员使用的软件在用户体验上更加友好、使用起来更方便,那么雇员的生产力和效率会更高,在一个企业中,人力(注:人员就是生产力)的成本越高,这一点就越明显。

那么企业雇员通常在做什么呢?他们通常完成自己的独立工作,完成他们的经理分配给他们的任务。企业越大,工作细分的程度越高。在细分好的环境中,良好的细分帮助雇员把自己能力最强的部分发挥在对应的工作上,取得最优的效果,而不是每个人都做很多事,最终绩效只能取得一个平均数。但是在日程生产活动中的细分,带来了沟通上的问题,如下图所示:

一个典型的任务工作流程和沟通

在这个流程里,一个普通的雇员(可能做任何工作),或许不需要经常和他人交流分配子任务的内容;


任务驱动的 CRUD 界面

为了更好的分配任务并提供恰到好处的反馈,很多工具被聚合起来,包括但不限于:语音、电话、电子邮件和及时通讯工具。随着企业的发展,能够自动完成任务分发的需求也在增长。自动化的任务管理可以帮助经理人跟踪并掌握正在发生的事情、减少风险并且保障在合适的时间完成合适的任务。

尽管自动化非常有用,但那时很多端对端的企业流程还是需要人工参与交互。比如为了推进一个业务流程,人们会需要处理请求或者管理异常或者其他必要的操作。

相较于聚合了“创建-读取-更新-删除”,首字母缩写为 CRUD 的很多低效率自动化程度不高的传统应用程序的用户界面,随着任务流概念推出的“任务驱动的用户界面”是更好的。但是步行的是,每天的工作和生活中还是有很多的 CRUD 界面的程序在运行着。CRUD 界面的用户是这样跟着文档信息流来完成操作的:打开展示数据的界面——改变数据对象的属性。在另一个界面里,改变一个值,例如把值 xyz 变成 ABC。

举例:在一个医疗应用中,需要改变对于病患的描述

  • 在 CRUD 系统里:医生找到病患的档案——描述;然后点击编辑,编辑内容;保存
  • 在任务驱动的系统里:医生找到病患的档案——描述然后点击编辑描述,编辑内容;保存

在那些对于业务而言没有太高贡献价值的系统,CRUD 的工作流还是很有效的,但是更重要的、更复杂的任务要求下,CRUD 就变得没那么高效了,此外,在这些情况下,出错的概率也在增加;在一个流程中,用户可能漏掉了一步,又或者有很多人完成的任务,每个人的完成方式不同,使得制作任务完成报告变得困难。在针对目标 A 的变动情况很方便地可以生产报告的时候,回答如下问题是很困难得,甚至不可能;例如:“用户通常在哪一步出现疑惑?”“在工作流结束之后,用户的普遍表现如何?”以及其他类似要求根据用户行为提出的问题。

工作清单应用

在一个任务驱动的用户界面背后,或者就此归纳一下最重要的两件事:

  • 用户希望怎样使用软件?
  • 在流程中,软件可以如何引导用户?

任务驱动的用户界面,是 命令——查询——责任——分离(CQRS),这一创造高性能可扩展企业架构核心元素的基石。越来越多的企业开始转型成为流程驱动的企业,使用工作流引擎,BPM 软件来自动化他们的流程,工作清单应用,正如下图所示的进行了聚合。一个典型的工作清单应用让用户可以检视一个任务清单,查看任务详情并完成任务。

在市场上已有的软件和用户实际需求之前任然存在差距。例如一些软件商没有做好国际化;一些软件的任务过滤和分级功能需要强化。如果一个任务不能被完整的支持,那么流程应当被设计成允许可替代的情况。

现在,让我们忘掉业务流程管理 ( BPM)等等软件和模型,我们先专注于人们工作的方式,我们必须考虑:

  • 任务池的基本任务:雇员需要完成的
  • 分配给雇员的任务:通常情况下,任务根据重要性被分配给不同的雇员

能够直接分发任务给指定的人或者小组是必须的,并且也应该创建一个他们可以选择任务的任务池。例如公司里面有一个小组调查贷款的核验情况,可以直接分配到人身上,也可以让整个小组自由选取,在这两种分配方式上,实际可以决定分配方式的是每个人负责的区域,基于这一点这两种方式都行得通。

一个人完成任务的三个关键要素如下:

  1. 上下环境:一个人完成一项任务需要收集哪些数据?决策的时候哪些额外信息是有益的?
  2. 引导:一个人该如何完成任务?正确完成一个活动需要那些指导方式?
  3. 数据:哪些数据需要被提取并用于整个的大任务?一个人该如何报告任务结果?

下图展示了一个任务流:

每个任务的定义应当可以回答下列问题:

  • 谁能完成任务?——包括群组角色和动作类型
  • 哪些需要完成?——定义了任务
  • 这些任务怎样完成?——列示了任务的输入和输出
  • 关联参与者?——列示关联的需要参与的人
  • 什么时候必须完成任务?——定义了任务的时间

在实际操作中,有时任务会变成了员工需要完成的工作对象,以下是操作中一些典型的要素:

  • 升级——如果员工基于任何理由无法完成任务、无法按时完成任务、或者结果不符合预期;升级通常需要指导者重新分配任务、重启任务或者取消任务
  • 取消——如果任务取消了,那么需要做必要的操作来修正影响。例如会议取消了,日程应用应通知参与方会议的取消,并释放对应的如会议室等资源
  • 顺序——一个任务的输出是另一个任务的输入
  • 并行——在一个任务开始之前,所必需的任务必须都完成
  • 任务池——任务不会直接分配给某个人,而是某个群组。每个人可以从中选择自己的任务
  • 任务分配——分配的实际方法
    • 固定的——每个人领取自己的指定任务
    • 动态的——任务的完成人没有确定
    • 有分配规则——按照不同的要求进行分配
  • 提醒——一个任务的提醒应当多次发出,例如基于任务的时间和需要提醒的系欸但进行提醒

结论

现在的应用程序基本上都有自己的任务界面。一个良好设计的、任务驱动的界面会导致更好的结果。此外,关键词引导或者互动式的用户引导可以帮助用户做出正确的操作。因此,应用的用户体验应该集成到流程之中,用于集中用户的注意力和行为,而不是盯着数据不放。在此基础上,我们可以创造出更有效率的软件。

MATLAB 2014a 编译错误解决以及javabuilder 编译使用

Test checkout of feature ‘Compiler’ failed.

如果运行编译器出现上述问题,是因为工具箱的问题。需要用文件去替换,这里做个记录。具体步骤有截图,方法来自北邮论坛,下载解压缩之后可以看明白。

需要注意的是license文件需要查看原来的名字并做相应替换。其他正常操作没有需要注意的。

http://pan.baidu.com/s/1bnbDZrT

针对JABuilder编译jar包的问题,现在有两个注意点:

  1. function里面不要尝试输出参数,否则在Class中引用时会对不上输入参数,不仅仅是输入参数的类型,还包括了数量。
  2. 变量输入的问题,如果在 m 文件中包含了输入,那么 java 可以直接传递变量值进来,只要顺序对应好,和 java 的变量名没有关系,并且数组和值可以直接传入,并没有需要按照官方文档使用 MWArray 进行操作。

 

STDYUN停止服务了

惊闻 STD 云要停摆了,现有用户要迁往美团云。

之前推荐过 STD 云,因为少有的 SSD 带来的高 IO 着实很迷人,目前还不知道内幕,所以只能猜测成本太高了,尤其是 STD 还很仗义的提供了 OCTO PRESS 的免费托管。

这个事情不大不小,还是引起了关于小公司停摆不靠谱的话题。话说现在在国内的环境真不靠谱,成本低的就有巨头来碾压你,成本高的巨头都不出手,自己就把自己拖死了,指望像乔布斯那样走在人文与艺术的康庄大道上最后还是碰到路口的罗锤子现在还生死不明,所以我以前就臆断过,只有像普京那样 KGB 出来的真汉子,才能摆的平现在这环境,不过还有背后的真巨头没发力呢,怎么看都是黑云压城城欲摧的。

另一个连带消息就是这两天发现 DigitalOcean 的新加坡数据中心可选,但是速度没有那么理想,尽管延迟是降低了,但是感觉反而变差了,紧跟着 Windows Azure 反而给力起来了,搞得我这两天在认真研习 Hyper-V 的相关内容,准备在 Windows Azure 上做点东西自己用用。

另外一点就是昨天在知乎上看到有在扯 BIM 的相关内容,BIM 在过内鼓吹了这么长时间总算是勉强落地了,话说 ArchiCAD 你啥时候能多关照一下国内呢。。。

这周总算出了太阳,吐槽完毕!

Circuits有了新的更新

今年 CES 上算是比较劲爆的一条消息,不过目前和国内无关,因为这个服务对商家良心要求比较高。

Circuits.io 官方宣布加入 Autodesk 123D 的大家庭了。

 

 

主要内容就是用户可以在 123D 的站点在线完成 3D 模型的设计、整理和制作。好处就是对于初学者来说省去了现实中显得杂乱复杂的实际电气元件,对于高级玩家来说则是一个类似“速写板”的工具。

目前只要用 Autodesk 123D 帐号登录 123d.circuits.io 就行。原有的 Circuits 项目会自动整合到新的帐号里去。然后 123D高级订阅什么的。

下面是演示视频: