关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

强化身份认证:精通 GCE 的 OS Login 与双重验证

发布时间:2025-04-22

  确保只有授权用户才能访问 Google Compute Engine (GCE) 实例是安全的基础。传统的基于元数据分发 SSH 公钥的方式虽然可行,但在管理大量用户和实例、实施精细权限控制以及满足严格审计要求方面存在局限性。Google Cloud 的 OS Login 功能提供了一种更现代化、更安全、与 IAM 集成的 Linux 实例访问管理方式,并且可以结合双重验证 (2-Factor Authentication, 2FA) 进一步提升安全性。本文将深入探讨 OS Login 的优势、配置、使用及其 2FA 集成。

  一、 传统 SSH 密钥管理的挑战

  · 密钥分发与管理: 需要手动将用户的 SSH 公钥添加到项目或实例的元数据中。用户离职或权限变更时,需要手动移除密钥,过程繁琐且易遗漏。

  · 权限控制粗糙: 基于元数据的密钥通常授予对实例的完全 Shell 访问权限,难以实现基于角色的精细控制(例如,只允许某个用户以特定身份登录,或限制其 sudo 权限)。

  · 身份与 GCP IAM 脱节: 实例内的 Linux 用户账户与 GCP 的 IAM 用户身份没有直接关联,难以统一管理和审计。

  · 审计困难: 难以简单地审计谁在何时通过哪个密钥登录了哪个实例。

  二、 OS Login:基于 IAM 的 SSH 访问管理

  OS Login 旨在解决上述挑战,将 Linux 用户账户管理与 Google Cloud IAM 集成起来:

  · 工作原理:

  1. 启用 OS Login(可以在组织、项目或实例级别设置)。

  2. 用户通过 IAM 被授予特定的 OS Login 角色(如 roles/compute.osLogin 用于普通登录,roles/compute.osAdminLogin 用于管理员登录/sudo 权限)。

  3. 当用户尝试通过 SSH 连接到启用了 OS Login 的 GCE 实例时,实例上的 OS Login 守护进程(通常通过 GCE Guest Environment 提供)会查询 GCP 获取该用户的 POSIX 账户信息(用户名、UID、GID、Home 目录、SSH 公钥等)。这些信息可以由 Google 自动生成,也可以从用户的 Google Workspace 或 Cloud Identity 账户同步。

  4. 如果用户具有相应 IAM 角色且 SSH 密钥匹配,则允许登录。

  · 核心优势:

  o 集中式管理: SSH 访问权限完全通过 GCP IAM 进行管理。添加、移除用户或更改权限只需修改 IAM策略即可,实时生效。

  o 身份统一: Linux 用户身份与用户的 Google 身份(Google Account, Google Workspace, Cloud Identity)关联。

  o 精细权限控制: 可以通过 IAM 角色区分普通用户和管理员用户 (sudo 权限)。

  o 增强审计: SSH 登录事件可以通过 Cloud Audit Logs 进行记录,清晰地显示哪个 IAM 用户登录了哪个实例。

  o 无需手动管理 SSH 密钥: 用户可以将自己的 SSH 公钥上传到自己的 Google 账户或 OS Login profile 中,无需管理员手动分发。

  三、 启用和配置 OS Login

  · 启用:

  o 组织策略 (推荐): 在组织层面设置策略,要求所有新项目或特定文件夹下的项目默认启用 OS Login。

  o 项目元数据: 设置项目范围的元数据 enable-oslogin=TRUE。

  o 实例元数据: 为单个实例设置 enable-oslogin=TRUE(优先级最高)。

  · 授予 IAM 角色: 为需要登录的用户或服务账户授予 roles/compute.osLogin 或 roles/compute.osAdminLogin 角色。

  · 配置 POSIX 信息 (可选): 默认情况下,OS Login 会自动生成 Linux 用户名等信息。如果需要自定义(例如,与现有系统保持一致),可以在用户的 Google Workspace/Cloud Identity 配置中或使用 OS Login API 进行设置。

  · 上传 SSH 公钥: 用户需要将自己的 SSH 公钥添加到 Google 账户或通过 gcloud compute os-login ssh-keys add 命令添加。

  四、 结合双重验证 (2FA/MFA)

  为了进一步提升安全性,可以为 OS Login 启用双重验证:

  · 启用 2FA:

  o 组织策略: 设置组织策略 constraints/compute.requireOsLoginMFA 为 true。

  o 项目/实例元数据: 设置 enable-oslogin-2fa=TRUE。

  · 支持的 2FA 方法: OS Login 通常支持 Google Authenticator (TOTP) 或兼容的 OTP 应用,以及通过短信或电话进行验证。用户需要在其 Google 账户的安全设置中配置好 2FA 方法。

  · 登录流程: 启用 2FA 后,用户在通过 SSH 使用密钥认证成功后,会被提示输入其配置的 2FA 验证码才能完成登录。

  注意: 启用 2FA 会增加登录的步骤,需要确保用户都已正确配置并理解如何使用 2FA。

  云服务新选择!一万网络助您畅享谷歌云超值折扣!专业代购团队,正规渠道采购,量大从优!企业级方案定制+7×24小时技术支持,让上云更简单、更省钱!立即咨询一万网络热线:4000-968-869,开启数字化转型加速引擎!

  五、 使用 OS Login 连接

  · 使用 gcloud compute ssh (推荐): gcloud 命令会自动处理 OS Login 的认证流程(包括查找用户、传递密钥)。如果启用了 2FA,它可能会提示进行验证。这是最简单的方式。

  Bash

  ·

  gcloud compute ssh [INSTANCE_NAME] --zone=[ZONE] --project=[PROJECT_ID]

  ·

  · 使用标准 SSH 客户端: 也可以使用 ssh 命令,但需要确保:

  o 用户的用户名是 OS Login 生成或配置的用户名(通常是 USERNAME_DOMAIN_SUFFIX 格式)。

  o 使用的私钥是已添加到用户 Google 账户或 OS Login profile 中的公钥对应的私钥。

  o 可能需要配置 SSH 客户端以正确处理 2FA 提示(如果启用)。

  六、 限制与考量

  · 仅限 Linux: OS Login 目前主要支持 Linux 实例。Windows 实例访问管理通常依赖 AD 或本地账户。

  · Guest Environment 依赖: 需要 GCE Guest Environment 中的 OS Login 相关组件正常运行。

  · 不支持某些旧 OS: 非常旧的 Linux 发行版可能不支持。

  · 网络连接: 实例需要能够访问 Google Cloud 的元数据服务器和 OS Login API 端点。

  · 与现有用户管理冲突: 如果实例上已有复杂的本地用户管理体系,引入 OS Login 需要仔细规划迁移或共存策略。

  七、 OS Login vs. IAP 隧道

  Identity-Aware Proxy (IAP) 提供了另一种安全的 SSH/RDP 访问方式,它通过在 Google 的边缘网络建立加密隧道,无需实例拥有公共 IP 或开放 SSH/RDP 端口。IAP 基于 IAM 进行访问控制,也可以集成 MFA。

  · OS Login: 控制实例内部的用户账户和权限,基于 IAM。

  · IAP: 控制网络访问隧道的权限,基于 IAM。

  两者可以结合使用,提供更强的纵深防御:先通过 IAP 隧道连接,然后在实例内部通过 OS Login 进行认证和授权。

  总结

  Google Cloud OS Login 为管理 GCE Linux 实例的 SSH 访问提供了一种现代化、集中化且更安全的方法。通过将实例用户身份与 IAM 紧密集成,它简化了用户生命周期管理,实现了精细的权限控制,并增强了审计能力。结合双重验证 (2FA),可以进一步显著提高登录安全性。对于需要管理大量 Linux GCE 实例或对安全合规有较高要求的组织而言,采用 OS Login(并启用 2FA)是替代传统 SSH 密钥管理的最佳实践,有助于构建更安全、更易于管理的云基础设施。

  云服务新选择!一万网络助您畅享谷歌云超值折扣!专业代购团队,正规渠道采购,量大从优!企业级方案定制+7×24小时技术支持,让上云更简单、更省钱!立即咨询一万网络热线:4000-968-869,开启数字化转型加速引擎!



上一篇:从容应对变化:理解GCE维护事件与高可用策略

下一篇:现代化虚拟机流量治理:GCE 与 Traffic Director 的融合之道