随着公有云的推广,云上的安全问题也越来越受到关注。在云上运行的应用,尤其是一些数据敏感的应用,对数据在计算过程中的机密性也越发重视。磁盘和网络的数据加密有较多的方案来处理,计算的机密性则强依赖硬件提供的安全能力。两大CPU厂商,Intel和AMD,都提供了一些硬件安全技术,如Intel的SGX和TDX,AMD的SEV等来解决此类问题。 本文将基于Intel TDX技术,来分析Confidential Contianers(简称CoCo)项目的安全性。CoCo项目是一个开源项目,它基于流行的Kata Containers项目做了增强,在其上增加了机密计算能力,安全性从单向保护(防止基础设施受到上层workload侵害),扩展到了双向保 …
阅读更多由于国内网络环境特殊,使用kubeadm拉起K8s集群也变成了一件有技巧的事情。 本文介绍如何“科学”的使用kubeadm拉起一个单节点的K8s集群。 主要还是参考官网:https://kubernetes.io/docs/setup/ 1.安装容器运行时 参考 容器运行时:https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/ 结论:此处我们选用containerd,cgroup驱动选择systemd,cgroup v2/v1我们不做偏好设置。 1.1 设置Docker repo source 1sudo apt-get …
阅读更多怎样开始Solidity的学习 最近在学习区块链、智能合约相关知识,发现Solidity权威的学习资料很匮乏,很奇怪Solidity这么火竟然没有官方的详细学习资料,比如《Solidity Cookbook》这类书籍。 这篇文章是Solidity入门的入门文档,介绍如何搭建本地环境搭建。我个人也是新手,多年的语言学习体验还是习惯先有个本地的开发环境,Ethereum官方推荐的学习工具列举在下面:https://ethereum.org/zh/developers/learning-tools/ ,其中Remix我看到很多人在推荐,如果喜欢在线编码的话可以直接使用。 另外,Solidity的入门学习材料推荐以下两个: …
阅读更多前言 写Go代码时一下子想不起准确的运算符优先级了,Google搜索了下,发现前面几个SEO做的比较好的网址给的要不就是错的,要不就是写的乱七八糟,误人子弟。喷的就是下面这几个出错的: https://haicoder.net/golang/golang-operator-precedence.html http://c.biancheng.net/view/5559.html http://gitbook.net/go/go_operators_precedence.html 这几个基本上是互相抄的,没有验证,很容易反驳。比如,上面说"+", "-"的优先级大于“|”,那么以下代码 1a := 2 | 4 - 1 的结果应该等同于 …
阅读更多我至今在两家公司工作过,第一家是华为,第二家是蚂蚁金服。在两家待的时间都足够长了,谈谈对两家公司软件质量控制的一点感悟。 用一句话来对比两家的软件质量的话,我称为“椰子型”和“苹果型”。两家公司基本可以代表传统软件公司与互联网公司的不同的质量管理标准。 椰子型 华为擅长做“椰子型”软件,外壳坚硬无比,内部一包水。 华为的研发流程是很早就花大价钱从IBM引入的IPD研发流程,大致分为几个流程(参考): Charter(立项) --> TR1/2/3 --> PDCP(中期) --> TR4/5 --> EDCP(结项) 一个项目周期基本上是一年,PDCP之前是项目的设计和PoC阶段,可以改方案和设计,PDCP之后就不允许修改设计了 …
阅读更多CVE-2019-5736是一个比较知名的runc漏洞,利用方式简单,危害很大,经常被拿来做云原生安全的攻击/防御演示。 我最近也研究了下这个漏洞的使用,研究的第一步首先是复现。 尝试了github上的示例: https://github.com/Frichetten/CVE-2019-5736-PoC , 这里对源码做了一些修改,在下面分享一下。 注意:ubuntu上安装的docker 18.06似乎已经打上了补丁,我手动编译了runc的1.0.0-rc5版本才成功复现。 复现方式: 在一个terminal里面: …
阅读更多本文介绍如何使用kubeadm安装一个简单的包含三个节点的集群。 测试环境 三台VM,分别为test-vm, test-vm-1, test-vm-2,系统是ubuntu 19.04 下载 kubernetes的安装包,官方文档用apt get的方式,由于国内被墙了没法get到,可以直接从github上下载release包。把kubeadm,kubelet, kubectl装好就够了。docker当然也要装好。 具体的安装步骤暂时略过。 配置kubelet 三台节点可以手动配置一下kubelet服务,配置方法都是一样的: 1# cat > /lib/systemd/system/kubelet.service << EOF …
阅读更多- TUF 1.1 背景 TUF是Tor项目设计出的一套安全分发软件更新的框架,Notary是TUF框架的go语言实现,而Docker Content Trust是TUF框架的应用。理清三者关系有助于后续理解。 1.2 TUF的角色 TUF框架包含五类角色,对应五把密钥,分别是Root, Target, Snapshot, Timestamp, Delegated target(可选),每个角色对应一个元数据文件及一把密钥。 TUF角色和密钥的理解与Notary介绍有重合,可以参考 "2.3 Notary的密钥管理" 1.2 TUF的工作流 TUF框架的定义在这里 …
阅读更多本文介绍下如何创建kata的k8s集群, kata项目链接:https://github.com/kata-containers kata是什么不介绍了,能看到这篇文章的相信对kata都已经有一定了解了。 本文参考了官方的安装说明: https://github.com/kata-containers/documentation/blob/master/how-to/how-to-use-k8s-with-cri-containerd-and-kata.md 实际上仅仅安装没有什么好讲的,文档里讲的很清楚了。但是在我们恶劣的大网络环境下,就变得有点技巧了。 以下为正文 安装环境 Virtual Machine: OS: Ubuntu …
阅读更多通过自己制作initramfs可以使用qemu启动自定义的内核, 可以用于调试或测试。这里记录一下制作简单的initramfs的脚本, 方便后续使用。 本文参考了链接:Building a minimal Linux / Busybox OS for Qemu 完整脚本如下: 1#!/bin/bash 2set -e 3 4CWD=
pwd5BUSYBOX_FILE=busybox-1.28.1 6BUSYBOX_SRC=/tmp/busybox 7BUSYBOX_BUILD=/tmp/busybox-build 8INITRAMFS_DIR=/tmp/initramfs 9 10mkdir -p $BUSYBOX_SRC …
阅读更多