码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • OpenShift 4 - 对 OpenShift 的 etcd 数据库加密


    《OpenShift / RHEL / DevSecOps 汇总目录》
    说明:本文已经在 OpenShift 4.14 的环境中验证

    文章目录

    • 加密 etcd 数据库
    • 验证加密的 etcd 数据库
    • 解密 etcd 数据库

    加密 etcd 数据库

    OpenShift 对 etcd 数据库加密时只加密值,而不加密键。而资源类型、命名空间和对象名称是未加密的。

    1. 执行命令编辑 apiserver 对象。
    $ oc edit apiserver
    
    • 1
    1. 添加以下 YAML 配置。其中 aesgcm 用于 AES-GCM 加密,而 aescbc 用于 AES-CBC 加密。
    spec:
      encryption:
        type: aesgcm
    
    • 1
    • 2
    • 3
    1. 修改完 apiserver 后就会对 etcd 进行加密,整个过程需要持续一段时间。可以执行以下命令查看加密过程。
    $ oc get openshiftapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'
    EncryptionInProgress
    Resource routes.route.openshift.io is being encrypted
    
    • 1
    • 2
    • 3

    当返回以下结果代表加密完成。

    EncryptionCompleted
    All resources encrypted: routes.route.openshift.io
    
    • 1
    • 2
    1. 执行以下命令可以看到在 etcd 中加密的对象类型,其中包括 secret 和 configmap。
    $ oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'
    EncryptionCompleted
    All resources encrypted: secrets, configmaps
    
    • 1
    • 2
    • 3

    验证加密的 etcd 数据库

    1. 完成《OpenShift - 利用容器的特权配置实现对OpenShift攻击,以及如何使用 PSA 和 RHACS 防范风险》一文中“环境准备”和“获取 etcd 中的数据”场景。
    2. 执行命令查看从 OpenShift 集群中复制出来的 etcd 数据库文件,确认已经无法识别 Secret 中的数据了。
    $ strings ~/db | grep my-secret -A 10
    -/kubernetes.io/secrets/pod-security/my-secret
    k8s:enc:aesgcm:v1:1:
    fB/7J
    JzCF6
    A/kubernetes.io/secrets/pod-security/sa-privileged-dockercfg-6f4hv
    sk8s:enc:aesgcm:v1:1:
    ]_ZodzH
    1xse
    ,t]Fm
    5EWg
    a?~(
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    解密 etcd 数据库

    1. 参考加密 etcd 数据库的操作过程,只需要使用以下的 YAML 即可恢复已经加密的 etcd 数据库。
    spec:
      encryption:
        type: identity
    
    • 1
    • 2
    • 3
    1. 解密过程需要一定时间,可通过哟以下命令查看 kubeapiserver 状态。注意:在单节点 OpenShift 环境中会出现需要重新登陆的情况。
    $ oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'
    DecryptionInProgress
    Encryption mode set to identity and decryption is not finished
    
    • 1
    • 2
    • 3
    1. 解密完成后会有以下提示。
    $ oc get kubeapiserver -o=jsonpath='{range .items[0].status.conditions[?(@.type=="Encrypted")]}{.reason}{"\n"}{.message}{"\n"}'
    DecryptionCompleted
    Encryption mode set to identity and everything is decrypted
    
    • 1
    • 2
    • 3
    1. 解密后可再次使用《OpenShift - 利用容器的特权配置实现对OpenShift攻击,以及如何使用 PSA 和 RHACS 防范风险》一文中“环境准备”和“获取 etcd 中的数据”场景验证。
  • 相关阅读:
    Java 多线程:锁
    Revit 中参数化多边形的画法?
    Java常用配置项和命令行
    Linux单例模式
    Echarts 折线图的详细配置过程
    【持续更新】Spark Submit命令 配置参数详解
    Nginx流量控制
    协议(网络协议)
    浅谈对属性描述符__get__、__set__、__delete__的理解
    开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition
  • 原文地址:https://blog.csdn.net/weixin_43902588/article/details/134364130
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号