Kubernetes环境下的Bastion安全实践:与GitHub Authorized Keys无缝集成指南
2026/8/10 20:29:01 网站建设 项目流程

Kubernetes环境下的Bastion安全实践:与GitHub Authorized Keys无缝集成指南

【免费下载链接】bastion🔒Secure Bastion implemented as Docker Container running Alpine Linux with Google Authenticator & DUO MFA support项目地址: https://gitcode.com/gh_mirrors/bast/bastion

在Kubernetes集群管理中,Bastion主机作为安全入口,承担着控制访问和保护内部资源的重要角色。本文将介绍如何在Kubernetes环境下部署和配置Bastion容器,重点讲解如何与GitHub Authorized Keys实现无缝集成,为团队提供安全、便捷的访问控制方案。

图1:Bastion项目logo及核心功能展示

为什么选择Bastion容器

Bastion项目是一个基于Alpine Linux的Docker容器,提供了安全的堡垒机功能,支持Google Authenticator和DUO双因素认证(MFA)。相比传统的堡垒机部署方式,容器化的Bastion具有以下优势:

  • 轻量级:基于Alpine Linux,镜像体积小,资源占用低
  • 易部署:可直接在Kubernetes集群中部署,支持水平扩展
  • 安全加固:内置多种安全措施,默认禁用不必要的转发功能
  • 灵活集成:支持多种认证方式和第三方服务集成

快速部署Bastion到Kubernetes

要在Kubernetes环境中部署Bastion,可通过以下步骤快速实现:

  1. 克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/bast/bastion
  1. 进入项目目录:
cd bastion/examples/compose
  1. 根据实际需求修改配置文件:

    • docker-compose.yml
    • bastion.env.example
  2. 使用Kubernetes配置文件部署(可基于docker-compose.yml转换)

配置GitHub Authorized Keys集成

Bastion支持通过SSH Authorized Keys Command与GitHub实现密钥集成,具体配置步骤如下:

1. 环境变量配置

在bastion.env.example中设置以下环境变量:

SSH_AUTHORIZED_KEYS_COMMAND=/path/to/your/script SSH_AUTHORIZED_KEYS_COMMAND_USER=root

2. 配置授权命令脚本

Bastion提供了默认的授权命令脚本ssh-authorized-keys-command,内容如下:

if [ -n "${SSH_AUTHORIZED_KEYS_COMMAND}" ] && [ "${SSH_AUTHORIZED_KEYS_COMMAND}" != "none" ]; then echo "- Enabling SSH Authorized Keys Command" echo "AuthorizedKeysCommand ${SSH_AUTHORIZED_KEYS_COMMAND}" >> /etc/ssh/sshd_config echo "AuthorizedKeysCommandUser ${SSH_AUTHORIZED_KEYS_COMMAND_USER}" >> /etc/ssh/sshd_config fi

3. 自定义GitHub密钥获取脚本

创建自定义脚本从GitHub获取用户公钥,例如:

#!/bin/bash # 从GitHub API获取指定用户的公钥 curl -s https://api.github.com/users/$1/keys | jq -r '.[] | .key'

4. 挂载配置到容器

在Kubernetes部署配置中,确保脚本正确挂载:

volumes: - name: ssh-authorized-keys-command hostPath: path: ./scripts/ssh-authorized-keys-command containers: - name: bastion volumeMounts: - name: ssh-authorized-keys-command mountPath: /etc/init.d/ssh-authorized-keys-command readOnly: true

安全增强配置

除了GitHub密钥集成外,还可以通过以下配置增强Bastion的安全性:

双因素认证(MFA)

Bastion支持Google Authenticator和DUO MFA,配置文件位于:

  • pam.d/google-authenticator
  • pam_duo.conf.env

登录通知

配置Slack通知,实时监控Bastion登录情况:图2:Bastion登录活动的Slack通知示例

相关配置文件:

  • slack/pam-open_session-notification.json

限制访问来源

通过Kubernetes NetworkPolicy限制只能从特定IP段访问Bastion服务:

apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: bastion-policy spec: podSelector: matchLabels: app: bastion ingress: - from: - ipBlock: cidr: 192.168.0.0/16

日常维护与监控

查看日志

Bastion的日志配置位于sshd_config,可通过Kubernetes日志功能查看:

kubectl logs -f <bastion-pod-name>

更新配置

修改配置后,可通过以下命令滚动更新Bastion部署:

kubectl rollout restart deployment/bastion

监控登录活动

通过Slack通知或查看auth.log监控登录活动,及时发现异常访问。

总结

通过本文介绍的方法,您可以在Kubernetes环境中快速部署一个安全的Bastion容器,并与GitHub Authorized Keys无缝集成,实现基于GitHub用户的访问控制。结合双因素认证和登录通知等功能,可以为Kubernetes集群提供强大的安全防护。

Bastion项目的更多配置选项和高级功能,请参考项目中的README.md和docs/目录下的文档。

【免费下载链接】bastion🔒Secure Bastion implemented as Docker Container running Alpine Linux with Google Authenticator & DUO MFA support项目地址: https://gitcode.com/gh_mirrors/bast/bastion

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询