你知道吗?65%的企业都认为他们无法同时兼顾安全和创新,因为他们认为开发人员需要拥有访问所有资源的权限才能获得更大的开发自由。那么有没有办法既能够确保开发过程的安全性同时也能保留敏捷所需的资源呢?在瞬息万变且日益复杂的云计算生态中能否实现呢?是否同时也让 DevOps 团队便于管理呢?或许我们可以从云安全管理中找到答案。
云安全管理是一个多步骤流程,目的在于主动应对潜在的安全漏洞。它需要跨越整个组织的云依赖关系,从会议、电子邮件和客户管理服务到开发团队使用的 PaaS(平台即服务)。
云资产的安全管理还需要包括数据加密、保护员工使用的各种设备以及管理用户凭据。最重要的是,云安全管理是一个持续的过程。因此,需要定期更新和维护。
大部分人会理所当然的认为云安全管理是安全团队的工作。但实际上,云安全应该是每个人的责任。IT 安全策略有时无法满足开发人员的需求,尤其是在工作负载平衡 docker 和容器方面。这就是 DevOps,或者更准确地说,是 DevSecOps 和 CloudOps 的作用所在。

往往企业认为不间断的开发节奏会更加高效,因此倾向于将安全放在软件开发周期的最后。但这样的做法通常导致完全相反的结果。因为在 DevOps 周期末尾时的安全评估往往会指出不合规问题,而处理这些问题会导致产品无法按时面市。而由于开发周期已经结束,有些企业的高管有时会冒着没有合适安全预防措施的情况下将产品推向市场。
而在云安全方面,只有不到60%的企业为开发人员明确了安全策略,而这其中只有四分之一的企业认真执行了这些策略。使用云能够企业带来许多优势,但其对应的安全风险也不容忽视。DevOps 必须在开发周期内制定明确的安全计划和指南,来避免或主动解决已知或潜在的安全问题。
与传统计算不同,云计算十分复杂。这是一个永无止境的安全和合规之旅。直白来说,每个处理云工具和环境的 DevOps 专业人士都应该了解一些云安全基本知识。
如今,大多数企业都采用多云基础架构,和不止一个云基础架构提供商进行合作。每个平台都有一套自己的安全工具,来保护特定云平台提供的服务安全。随着采用的云提供商和解决方案数量的增加,多个日志中的警报和通知也越来越多。因此企业需要确定报告的哪些风险和威胁实际上值得跟进和处理,这往往需要花费大量的时间和成本,因为企业需要为这些风险和威胁开发对应的威胁建模方法。
除了平台自带的安全工具,可以选择外部专业安全服务。这些服务能够帮助企业节省管理多个仪表盘和监控系统的时间和精力。外部安全服务提供商的目标是与所有云服务和平台集成,以接触最广泛的客户群体,这也外部安全服务成为集中式云安全管理的理想解决方案。
敏感信息如果被(有意或无意)放在错误的地方将会导致灾难性事件。由于安全漏洞,敏感信息被上传到代码存储库,Uber 有5700万条信息被泄露。
DevOps 和开发人员在设计流水线时关注速度和效率,而安全性是信息安全团队和 IT 部门经常关心的问题。开发时,企业的注意力常常放在产品和客户端的安全性上,而不是云工具的安全性上。这可能导致云凭据丢失、泄露、暴露和滥用。
因此,企业十分有必要加强员工的保护云凭据的意识,同时在内部进行安全宣教,教育员工如何识别网络钓鱼。一旦员工有意识保护凭据信息,企业则更容易执行安全策略。同时企业可以实施密钥和密码轮换,并确保密钥/密码安全性高且不易被暴力破解。
Gartner Inc. 研究发现高达 95%的云数据泄露是人为错误(例如配置错误)造成的。为了保护云凭据免受这些错误的影响,DevOps 团队需要确保将凭据扫描工具集成到 CI/CD 流水线中。
易受攻击的配置文件往往是和缺乏相应的专业知识挂钩,而忘记关闭公开访问权限的事情也时常发生。事实上,在扫描的 CloudFormation (AWS IaC)配置文件中接近一半存在错误配置,这也表明错误配置是普遍现象。

图片来源:Palo Alto Networks
有时开发人员需要设置一些公共读取权限,来检查某些内容是否正常运行,而事后忘记修改权限。为了避免配置出错,企业可以使用自动化工具来扫描配置文件。相比手动扫描配置文件,自动化工具能够高效且有效地扫描文档并查找错误。
让每个人可以无限制地访问所有内容,的确让开发过程更加通畅,但也让开发过程安全隐患重重。并不是每个人在此过程中都明确知道自己做了什么,做错了什么。因此执行最小访问权限原则(least access privilege principle)可以大大减少发生错误的概率和区域。
以下是企业可以采取减少访问权限的措施:
取消终端用户机器上的管理员权限
保护账户凭据
监控特权访问确保其合理使用
限制授予开发人员对其特定需求的访问权限
限制对生产系统的访问
权限访问管理(Privilege Access Management, PAM)可以将上述措施的过程自动化,其中包括生命周期内特权访问的监控、审计和强制合规。PAM 的实施可以让企业在开发过程中随时增加或取消访问权限,确保随着时间的推移保持最小访问权限。
在谈论性能、产品设计或代码时,“Start now, optimize later” (先启动,再优化)并不是个坏的选择。但涉及安全时,“optimize later” 可能意味着巨大的安全风险。在 CI/CD 中尽早实施安全策略有助于维护开发周期的安全性,还能极大地减少合规和配置错误的问题。
“持续安全”指在整个开发过程中测试安全性的方法,使开发过程保持敏捷的同时,允许开发人员及时响应发现的任何问题。通过保障开发的合规性和安全性,企业在需要时可以安全地在云上进行拓展。

图片来源: HyTrust
同时企业需要严格把控权限管理,确保仅在人员有访问需要时授予权限,以及确保配置文件具有适当的限制性。
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
我想用这两种语言中的任何一种(最好是ruby)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生
这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什
默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同
我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源