文/ Jesse Seales, Dart 和 Flutter 安全工作组工程师

今年年初,我们发布了 Flutter 2022 产品路线图,其中「基础设施建设」这部分提到:2022 年 Flutter 团队将增加对供应链的安全的投入,目的是达到符合基础设施 SLSA 4 级别中描述的要求。4 月份下旬,Dart 团队与 GitHub 合作,Dependabot 开始支持 pub.dev 上的 package 版本检测

Cocoon 是一个管理 Flutter Infra CI 的工具应用,我们已经实现了提升到 SLSA 2 级标准所要求的内容,将身份识别和访问管理 (Identity and Access Management, IAM) 权限降低到所需的最低权限,并对部分应用权限管理实施了基础设施即代码 (Infrastructure as code, IaC) 的策略。

身份识别和访问管理 (IAM) 是一种安全权限措施,主要用于访问敏感技术资源时,为不同需要的人授权不同的权限。基础设施即代码 (IaC) 的核心思路是通过代码而不是用手动的方式和流程来管理项目的基础设施。

亮点

Cocoon 不仅可以管理 Flutter Infra CI,还可以将多个 CI 服务与 GitHub 集成,使得团队在 GitHub 上开发变得更容易。Cocoon 通过了 SLSA 2 级的要求,这意味着 Cocoon 已经解决了 SLSA 1 和 2 级别中所有的安全问题。Google 的开源安全团队已经验证并审核了 Cocoon 具备 SLSA 2 级标准的要求。

我们为 docs-flutter-devmaster-docs-flutter-devflutter-dashboard 实施了额外的安全强化措施,使用基础设施即代码 (IaC) 系统实现身份识别和访问管理 (IAM)。这几个项目非常重要,他们为 Flutter 提供开发文档以及 Flutter 构建状态的仪表盘等。在 IaC 系统的管理下,安全权限的更改需要改动代码,没有批准则无法进行任何改动。也就是说,安全权限的改变是要通过版本控制系统来修改代码的,并且需要提供改变的理由。现有的 IAM 权限将会被减弱以遵循最小权限原则 (Principle of least privilege)。

优势

  • 为 Cocoon 实现 SLSA 2 级的要求内容,意味 Cocoon 的供应链具有「针对特定威胁的额外抵御能力」;
  • Cocoon 的自动构建流程为 flutter-dashboard 和 auto-submit 提供了源代码出处和防篡改的构建证明,这有助于加强构建流程中使用多种工具的安全性,如 Google Cloud Platform、Cloudbuild、App Engine 和 Artifact Registry;
  • 整体看,我们已经为 Cocoon 解决了所有级别要求中 83% 的内容,并已经敲定了为了满足每个 SLSA 级别的合规性工作,我们也做好 Cocoon 迈向 SLSA 4 级要求的准备。

经验总结和最佳实践

  1. 通过 Google Cloud Build 服务,我们仅做了相对较小的改动就提升了 Cocoon 构建过程中的供应链安全性,因为元数据验证会在 Cloud Build 过程中自动验证。
  2. 通过代码来管理和调整 IAM 权限会带来很多额外的好处,并且可以使首次访问权限的授权变得更简单。
  3. 提高或“升级” SLSA 的不同等级规范有时需要根据应用的构建流程等因素做出不同的投入。在争取达到最高级别 (SLSA 4) 的过程中会需要做很多不同于其他等级 (比如 SLSA 2 级) 的更改。

展望下一步

这将是 Flutter 和 Dart 走向更高 SLSA 级别要求的开始,我们希望可以将其中的收获实践到更多的应用中,同时也希望开始为 flutter/flutter 这样更复杂的代码库进行 SLSA 2 级以上的改造工作,同时也希望 Cocoon 应用可以达到更高水平的 SLSA 合规等级。

Flutter Cocoon 已达到 SLSA 2 级标准的要求的更多相关文章

  1. 走近科学,探究阿里闲鱼团队通过数据提升Flutter体验的真相

    背景 闲鱼客户端的flutter页面已经服务上亿级用户,这个时候Flutter页面的用户体验尤其重要,完善Flutter性能稳定性监控体系,可以及早发现线上性能问题,也可以作为用户体验提升的衡量标准. ...

  2. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  3. CMMI 2,3,4,5级涉及的过程域(PA)介绍

      CMMI中的PA即Process Area的缩写,中文称为过程域.简单的说就是做好一个事情需要的某一个方面,对于软件开发来说,就是做好软件开发需要的某一个方面. CMMI2.3级共有18个过程域( ...

  4. Flutter 2022 产品路线图发布

    为了提升产品的透明性,每年年初 Flutter 团队都会发布今年度的产品路线图,以帮助使用 Flutter 的团队和开发者们根据这些优先事项制定计划. 2022 年 Flutter 团队将重点通过关注 ...

  5. Flutter与Dart 入门

    Flutter简介 Flutter是google推出的,一个使用Dart语言开发的跨平台移动UI框架,通过自建绘制引擎,能高性能.高保真地进行Android和IOS开发. Flutter是什么 Flu ...

  6. PKI标准、CA采取的规范、X509、PKCS

    PKI:Public Key Infrastructure 公钥基础设施 PKI标准可以分为第一代和第二代标准. 第一代PKI标准主要包括美国RSA公司的公钥加密标准(Public Key Crypt ...

  7. 可编程数据平面将OpenFlow扩展至电信级应用(一)

    可编程数据平面将OpenFlow扩展至电信级应用(一) 案例:基于WinPath网络处理器的电信极OpenFlow (CG-OF)client实现 作者:Liviu Pinchas, Tao Lang ...

  8. 华为参与《基于5G技术的医院网络建设标准》的制定

    [摘要] 5G 千兆网承载五地远程会诊,现场完成三例复杂性疑难重症远程病例讨论 [中国,北京,2019年9月4日] 金秋之际,在国家卫生健康委指导下,由中日友好医院•国家远程医疗与互联网医学中心•国家 ...

  9. PKCS 标准

    PKCS 标准 The Public-Key Cryptography Standards (PKCS)是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请.证书更新.证书 ...

随机推荐

  1. 2022-7-11第五组 pan小堂 js基础

    ##为何学习 JavaScript? ###JavaScript 是 web 开发者必学的三种语言之一: HTML 定义网页的内容 CSS 规定网页的布局 JavaScript 对网页行为进行编程 在 ...

  2. 题解【洛谷 P1466 [USACO2.2]集合 Subset Sums】

    题目传送门 设 \(sum=1+2+3+4+\dots+n=\dfrac{n(n+1)}{2}\). 如果 \(2\nmid sum\),则显然没有方案. 如果 \(2\mid sum\),则这两个集 ...

  3. 利用Css3样式属性Cursor来更换自定义个性化鼠标指针(光标)

    现而今,我们纵向的回顾整个大前端的历史,不难发现,人们对前端的审美要求越来越高,越来越严苛,与此同时,人们对追求美的体验是也极致的,从理性到感性,从平面到几何,从现实到虚拟,所以从某种角度来说,作为前 ...

  4. Odoo14 TypeError: Cannot read property 'classList' of undefined

    Traceback: TypeError: Cannot read property 'classList' of undefined at Class.setLocalState (http://l ...

  5. WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题

    最近发现:自己开发的窗体应用,在二级弹窗或者提示框弹出的时候,交替点击窗体和窗体外(相当于窗体交替的获取焦点和失去焦点),都会导致其他的应用一闪一闪的. 经过排查,是由于该窗体由于部分因素考虑,用了  ...

  6. React报错之useNavigate() may be used only in context of Router

    正文从这开始~ 总览 当我们尝试在react router的Router上下文外部使用useNavigate 钩子时,会产生"useNavigate() may be used only i ...

  7. JAVA语言基础组成(2)

    函数  函数的定义 1.什么是函数? 函数就是定义在类中的具有特定功能的一段独立小程序.函数也称为方法. 2.函数的格式: 修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,.. ...

  8. LuoguP2953 [USACO09OPEN]牛的数字游戏Cow Digit Game(博弈论)

    1~9显然,后面平\(A\)过去 #include <iostream> #include <cstdio> #include <cstring> #include ...

  9. 记录Java类型推断关键字var的一种特殊用法

    关于Java的var类型推断,有一种特殊用法,如下: 没有var类型之前声明一个匿名类对象,并调用它的方法. Object obj = new Object() { public void test( ...

  10. es5 es6 新增

    es5的新特性 对于数组和字符串都进行了加强 map 遍历 es6的新特性 数组的增强 find 查找findIndex 查找下标 字符的增强 includes 是否包含 (包含返回true 不包含返 ...