设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 综合聚焦 > 热点 > 炫彩酷站 > 正文

架构师如何才能够设计一个安全的架构(2)

发布时间:2017-01-13 14:22 所属栏目:136 来源:景保玉
导读:
导读:我们面临的风险是什么呢? 攻击、黑客、宕机、拒绝服务、密码泄露、机密信息外泄、安全受损等很多问题都可能来自于安全的问题。这显然是我们从架构角度认真对待不同的风险。这就提出一个很有意思的问题,我们是不是

  我们面临的风险是什么呢?

  攻击、黑客、宕机、拒绝服务、密码泄露、机密信息外泄、安全受损等很多问题都可能来自于安全的问题。这显然是我们从架构角度认真对待不同的风险。这就提出一个很有意思的问题,我们是不是可以样样精通呢?我问过“T”型的人才,我们有知识的深度,如果是Java的架构师,必须要真的理解Java,我们要做高性能的系统,这方面的知识,怎么做可扩展性,还有高可靠性。

  必须要保持这种意识

  所有不同的领域我们都有一定的宽度和广度,安全是其中一点。我们之前看到编码是整个所有活动当中的中心,是不是所有的知识都可以做编码呢?如果是一个小小的项目可以做自己的编码,同时也应该知道可用性、安全性以及扩展性的种种知识。这是不是意味着样样都精通呢?我给大家讲安全课,但是我不是安全专家。但是安全是我们作为架构师必须有意识、必须有概念,而且要知道安全环境不断的改变,有新的不同攻击、不同黑客,必须要保持这种意识。所以我们必须有安全的意识,而意识是一个关键词。

  刚才讲了“T”型人才,是一个通才型的专才。做软件团队的时候,可能有一个人来做这个工作,可能有一个专门软件架构师来做技术主管的角色。这个人就是我们的通才化的全才。但是你能找到这样一个人吗?我们可能要面试很多人、招聘很多人,是不是能找到通才化的人才呢?不一定的。最近我建立一个系统,是一个混合项目,我们可以有多个人进行架构的支撑,共同协同工作,联合起来形成了足够宽度和深度,一方面有通才型的专才,另一方面专家提供深度的支持。

  一般我做的项目里面可能会请一个专家,专家有相关的经验,有些是没有的。给大家看一个很有意思的博客,在英国看到的。如果系统里面有SQL的出入,就有流程或者基础设施的问题。如果你的问题有安全隐患的话,系统安全隐患,就是说明现在做错了,要看哪些地方做错了,如果没有这方面的专家怎么办?或者根本没有意识到潜在的安全问题或者已有的安全问题。

  安全怎么融入到系统当中

  从最根本的角度来看安全有什么要求。就像十年之前搞架构的时候,有哪些具体要求,哪些东西要做哪些不要做的。必须要清楚地知道,在建造架构的时候哪些东西需要做,怎么才能高效。我觉得安全也是一样,很多人都是从用户的角度来获取用户的需求。用户的角度确实不错,希望能够找一些好的、简单适用的。他们不是技术性的人才,视角不是特别独特。在编写用户表述的要求时,有不同的模板。所做的一切要清楚在你的系统里面,用系统的人分成哪些类的。

  去年我做了一个项目的架构分析,大概里面有两到三百个使用者所提供的一些要求,用户扮演着不同的角色。到底这些用户分成哪些?比如说超级用户还是管理员,还是一般性的用户。但是分不出来类。我觉得挺有意思的。

  如果我设计软件的话,必须要知道软件针对的受众是谁,谁会用。今天早上给大家看图,第一个就是上下文背景,中间是系统,下面还有与之沟通的系统,最上面是我们讲的用户。我们知道到底哪些类型的用户在使用我们的系统。为什么这点很重要?从安全角度讲很重要。问这个团队到底懂不懂安全,谁在用我们的系统?这些人用我们的系统,有什么样的功能?我们这些使用者所提供的一些,也从相关来讲比较高端的视角来分析一下类别。

  对于这方面的信息不是已经过时了,非常适用的。在英国一些咨询管理公司,要求做成文件发给我们,尤其是技术方面的要求。技术要求包括扩展性、安全、性能等。这些从特点来讲比较技术性的,而且非常详实。写这些要求的人,不是技术出身的,是商界出身的,他也不清楚产品规格里面细节多细合适,所以来一句系统是非常安全,对于系统的安全来一句就够了。作为架构师这句话牛头不对马嘴,确实要做到安全。

  用户或者SQL的攻击注入时,怎么样做到安全?

  很多英国的公司从安全的角度讲,做得很烂,因为团队不知道安全到底意味着什么。可能在网上随便问一些人到底该怎样做。

  作为架构师要分析需求的话,并不是说做大型的前端设计,而是做一些简单的,获取、捕获使用者的要求,做高级的架构设计,比较要考虑到扩展性、安全,如果没有考虑到这些,在打造架构的时候,可能会丢失非常宝贵的元素。可以开一些研讨会、交换文件,这种工作坊和小型研讨会的形式非常好,知道使用系统的是这部分用户。

  客户给的要求是系统非常安全,就要问他非常安全是有多安全,工作坊可以面对面的交流,谁在用我们系统,哪些方面的内容影响了他们对系统的使用,为什么会这样?这样会有非常具体的用户对系统的要求。除了捕获信息之外,还要置疑他们。我们团队必须要不断的置疑挑战我们一开始所制定出来的具体要求。到底我们开发的时候优先级别会怎样。觉得要求根本没必要,换一种方式行不行,我觉得就已经够了,要挑战不同的要求,不仅是功能性的,还有非功能性的,比如说安全,也要跟客户谈一谈。每次在系统里面引入安全的时候,要做一些权衡、妥协、让步。

  一般来讲,典型的让步、取舍是可用性、易用性和复杂性。也就是说,安全的话更复杂了。比如说我去银行要做,ID非常长,记不下来,输入密码登陆,到了第二页,要输入安全代码,有一个小键盘,类似于口令牌,随即生成输入进去。等我通过这么多安全检查进这个网站的时候,对话已经超时了,我输入这么多的密码,已经查不到我账户信息了,这是非常长、非常复杂的过程,用电子安全指令等。确实很安全,但是影响了便捷程度。这时要做取舍,是易用还是复杂安全性。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读