Google App Engine与Identity-Aware Proxy下SSH如何启用MFA?
GAE实例SSH连接每次访问触发MFA的可行方案
首先明确前提:只有GAE 灵活环境(Flex) 支持SSH访问底层实例,标准环境无原生SSH入口,以下方案均针对Flex环境生效:
方案1:实例内部配置PAM MFA模块
- 你可以在Flex环境的启动配置中加入Google Authenticator等PAM MFA模块的安装、配置逻辑,可通过
app.yaml的runtime_config或自定义容器镜像的Dockerfile实现配置固化 - 修改实例的
sshd_config配置,禁用Google Cloud默认的密钥自动注入豁免规则,强制所有SSH登录请求走PAM认证流程,即可实现每次SSH连接都要求输入MFA验证码 - 注意GAE Flex实例为动态扩缩容,不要将用户MFA密钥存在实例本地,需加密存储在Cloud Secret Manager这类中心化服务中,实例启动时自动拉取对应配置
方案2:通过IAP中转SSH并配置强制MFA规则
- 将所有SSH访问切换为走Identity-Aware Proxy (IAP) 中转,访问命令格式为
gcloud compute ssh --tunnel-through-iap [GAE Flex实例名] - 在Cloud IAM的上下文感知访问规则中,针对IAP SSH访问权限配置强制MFA校验规则,要求每次新建SSH会话都必须完成MFA验证,无法复用gcloud的初始认证状态
- 该方案无需修改实例内部配置,所有校验逻辑在Google Cloud访问控制层完成,配置门槛更低,同时支持统一管控所有实例的SSH访问权限
补充说明:你之前的认知是准确的,原生OS Login功能确实仅直接支持Compute Engine实例,不支持直接在GAE控制台开启,但以上两种方案均可实现你要求的每次SSH连接触发MFA的需求。
内容的提问来源于stack exchange,提问作者Mike Hartman
相关产品推荐
相关产品推荐

