我们如何保护 VSTS 中的数据不被 API 访问?

How can we protect data in VSTS from access via the API?

上下文: 我们有一个 VSTS 帐户 https://blahblahblah.visualtudio.com 我们已将其配置为使用 Azure Premium 条件访问并指定我们工作网络的 public IP 来阻止外部访问。因此内部网络外部的客户端的交互式访问被阻止。

但这不会阻止个人访问令牌 (PAT)。我也没有看到禁用或阻止使用 PAT 的设置。 PAT 可以允许通过 REST API 访问我们 VSTS 帐户中的大部分数据。如果没有像 Azure AD Premium 条件访问(白名单)这样的机制,世界上任何人都可以通过窃取 PAT 来访问或修改我们的数据。这对我来说似乎是一个巨大的安全漏洞。我是否缺少针对该漏洞的控件?

理想情况下,我们会在 VSTS 中有一个白名单,而不必依赖 Azure AD Premium。然后 VSTS 服务将阻止并非源自我们指定的安全位置的交互式和 API 调用。但据我所知,这并不存在。

那么,我们如何保护我们的数据免受世界各地可能通过 API 路径和被盗 PAT 访问我们帐户数据的用户的侵害?

您可以禁用基本身份验证和备用凭据,但这也会禁用 VSTS 上的一些功能(例如 SSH Git 和 Git 从一些不支持 OAuth 工作流的工具访问).

很遗憾,无法通过这种方式禁用个人访问令牌。尽管您可以让人们将范围限制在他们的代币内,并让他们只创建有限时间的代币。

未来与 AAD 的集成可能会更加紧密,并且能够检查 AAD 条件访问。

另一个重要说明:用户使用 AAD 登录后,他们可以将 laptop/device 带到另一个位置。只要 AAD 身份验证仍然有效,就不会阻止来自其他位置的访问。据我所知,在 VSTS 的情况下,在登录和更新令牌时检查条件访问。

目前只有对您的用户进行尽职调查才能防止未经授权访问您的帐户。让他们像对待其他重要秘密信息一样对待他们的 PAT。使用短期 PAT,将它们的范围限制在需要的范围内,并将它们安全地存储在 Lastpass 或 Keepass 等密码库中。

PS:在云世界中,机器会定期分配新的 IP 地址并且 IPv6 会使区分机器组变得更加困难,纯 IP 限制是 而不是 保证数据安全的方法。 IP也是比较容易被欺骗或隐藏的东西之一。