secrets 管理工具 Vault 的介绍、安装及使用

Vault 是 hashicorp 推出的 secrets 管理、加密即服务与权限管理工具。它的功能简介如下:

  1. secrets 管理:支持保存各种自定义信息、自动生成各类密钥,vault 自动生成的密钥还能自动轮转(rotate)
  2. 认证方式:支持接入各大云厂商的账号体系(比如阿里云RAM子账号体系)或者 LDAP 等进行身份验证,不需要创建额外的账号体系。
  3. 权限管理:通过 policy,可以设定非常细致的 ACL 权限。
  4. 密钥引擎:也支持接管各大云厂商的账号体系(比如阿里云RAM子账号体系),实现 API Key 的自动轮转。
  5. 支持接入 kubernetes rbac 认证体系,通过 serviceaccount+role 为每个 Pod 单独配置认证角色。
  • 支持通过 sidecar/init-container 将 secrets 注入到 pod 中,或者通过 k8s operator 将 vault 数据同步到 k8s secrets 中

在使用 Vault 之前,我们是以携程开源的 Apollo 作为微服务的分布式配置中心。

QEMU/KVM 虚拟化环境的搭建与使用

QEMU/KVM 有一定的使用门槛,本文假设你已经拥有基础的虚拟化相关知识,最好是已经有 virtualbox 或 vmware workstation 的使用经验。

虚拟机(Virtual Machine)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。它的主要用途有:

  1. 测试、尝鲜新的操作系统。
  2. 快速创建完全隔离的沙箱环境,用于运行某些不安全的或者敏感的文件/程序。
  3. 云服务商或企业会通过服务器虚拟化,提升服务器的利用率。
  4. 虚拟机可以创建快照跟备份,系统环境可以随时还原到旧的快照,也能方便地拷贝给他人。

而 QEMU/KVM 则是目前最流行的企业级虚拟化技术,它基于 Linux 内核提供的 KVM 模块,结构精简, 性能损失小,而且开源免费,因此成了大部分企业的首选虚拟化方案。

目前各大云厂商的虚拟化方案,新的服务器实例基本都是用的 KVM 技术。即使是起步最早,一直重度使用 Xen 的 AWS,从 EC2 C5 开始就改用了基于 KVM 定制的 Nitro 虚拟化技术。

但是 KVM 作为一个企业级的底层虚拟化技术,却没有对桌面使用做深入的优化,因此如果想把它当成桌面虚拟化软件来使用,替代掉VirtualBox/VMware Workstation, 有一定难度。

openSUSE 使用指南

openSUSE 是一个基于 RPM 的发行版,这和 RHEL/CentOS 一致。但是它的官方包管理器是专有的 zypper,挺好用的,软件也很新。

我最近从 Manjaro 切换到了 openSUSE,发现 KDE 桌面确实比 Manjaro 更丝滑,而且社区源 OBS 体验下来比 AUR 更舒服。

2020 年年终总结

一晃一年又过去了,今年可真是魔幻的一年,口罩带了一年没能摘下来,美国疫情感染人数 1500 万。

上面这段话要是让去年的我看到了,没准都以为今年真的生化危机了hhh…

言归正传,从去年 6 月底入职,到现在有一年半了,这一年半学到的东西真的非常多,完全重塑了我的技术栈。现在我的整个技术栈,基本都是围绕着云原生这一块发展了。

「小歌行」-景德镇文艺复兴-2020巡演-深圳

2020 年 11 月 28 日,我第一次参加 Live House,演出乐队是「景德镇文艺复兴」。

「景德镇文艺复兴」是我很喜欢的一支后摇乐队,我喜欢上这支乐队,还得从我的昵称「於清樂」说起。

17 年的时候,听了许多后摇,网易云就给我推荐「景德镇文艺复兴」的歌,如此结缘。

Base64 编码并不唯一

个人笔记,不保证正确

问题

我以前只知道 Base64 这个编码算法很常用,自己也经常在 JWT 等场景下使用,但是从来没了解过它的原理,一直先入为主地认为它的编码应该是唯一的。

但是今天测试 JWT 时,发现修改 JWT 的最后一个字符(其实不是我发现的。。),居然有可能不影响 JWT 的正确性。比如下这个使用 HS256 算法的 JWT:

使用 tcpdump 和 Wireshark 进行远程实时抓包分析

抓包分析

抓包分析工具主要有两种:

  1. http/https 网络代理工具:mitmproxy/fiddler 都属于这一类,用于分析 http 非常方便。但是只支持 http/https,有局限性。
  2. tcp/udp/icmp 等网络嗅探工具:tcpdump/tshark 都属于这一类,网络故障分析等场景常用。

这里主要介绍如何使用 tcpdump + wireshark 进行远程实时抓包分析。而 mitmproxy 抓包和 wireshark 本地抓包都相当简单,就不介绍了。

使用 Istio 进行 JWT 身份验证(充当 API 网关)

本文基于 Istio1.5 编写测试

Istio 支持使用 JWT 对终端用户进行身份验证(Istio End User Authentication),支持多种 JWT 签名算法。

目前主流的 JWT 算法是 RS256/ES256。(请忽略 HS256,该算法不适合分布式 JWT 验证)

这里以 RSA256 算法为例进行介绍,ES256 的配置方式也是一样的。