Aws-cli: U2F 支持

创建于 2018-09-26  ·  45评论  ·  资料来源: aws/aws-cli

根据 AWS 博客 U2F 现在支持控制台登录:
https://aws.amazon.com/blogs/security/use-yubikey-security-key-sign-into-aws-management-console/

在 aws-cli 上有一条路径来支持这一点尤其重要,这样我们就可以点击执行命令,而不是在磁盘/内存上放置长期存在的令牌。

feature-request v2

最有用的评论

据我了解这个问题,STS/IAM 必须获得 API 支持,将安全密钥作为 MFA 令牌,然后再继续进行?

任何人都可以阐明这一点吗? 当然,如果它还没有得到支持,那么它就在拐角处......?

编辑:

请不要让这成为那些令人畏惧的案例之一,公司假设他们的客户都不关心某个功能,因为他们实施了不是超级有用的版本,然后没有人使用它。

我从不使用 Web UI 登录 Amazon 控制台。 这对我来说都是 CLI 驱动的,因为我有几个帐户需要处理(等等)。 即使我_确实_使用网络用户界面登录,那么就目前而言,我需要使用_重复帐户_来处理我所有用于 U2F 的现有帐户,因为我仍然需要使用我的旧 Google/LastPass /whatever 用于所有aws-cli内容的验证器。

所以... AWS 的 U2F 支持有_潜力_成为我会_真正_热衷的东西,但如果没有 CLI 支持,它还不值得触及。 我想很多人都在同一条船上。

所有45条评论

AFAIK,U2F 通常只适用于 Web 浏览器。 您希望如何从 CLI 中使用它? 启动浏览器?

@JensRantil不,任何类型的应用程序都可以与 U2F 令牌交互。

来源:我在 Debian 中维护libu2f-*pam-u2f ;)

看起来 API 访问尚不支持 U2F

您不能将受 MFA 保护的 API 访问与 U2F 安全密钥一起使用。

也就是说,我肯定已经将此反馈传递给了服务团队。 我自己的经验是,U2F 的可用性是其他任何第二个因素的 100000 倍,因此我什至希望看到它供我自己使用。

一个警告是,这需要是 V2 功能,因为我相当确定我们必须引入 c 依赖项才能与 u2f 令牌交互。

@JordonPhillips仅供参考, Python U2F 主机库; 它本身是 100% Python,但取决于hidapi ,IIRC 使用libusblibudev
OTOH,它已经在所有主要发行版中可用,所以这应该不是什么大问题?

它还要求(就像 U2F 的任何使用一样)用户可以与 U2F 设备交互; Yubico 在libu2f-host维护上游的 udev 规则,我在 Debian 中以libu2f-udev (因此它们可以在不拉入 C 库的情况下安装),这是task-desktop的依赖项(从 Debian 10 “buster”开始),所以大多数用户会开箱即用; 在拉伸(当前的 Debian 稳定版)中,我们在udev包中提供了 U2F 的 udev 规则,因此它也可以在那里使用。
TL;DR:从 jessie 开始,Debian 应该拥有对 U2F 设备的正确权限(一年多前发布),所有 Debian 衍生产品也应该如此(除非他们竭尽全力破坏 U2F...)

这对我来说将是非常有帮助的。 每天拿出手机 10-20 次来复制 TOTP 并不好玩。 😅 如果我可以直接点击我的 Yubikey,我的 aws-cli 体验会_如此_令人愉快。

@nbraud看起来他们使用的 python 接口不提供 linux 轮子,因此安装它需要用户安装编译器。 目前这不是安装 cli 的要求,因此添加该库对许多用户来说将是一个重大变化。

@JordonPhillips关于引入一个重大变化......我可以想象有几种方法可以让热情的用户尽早从中受益,而不会为不那么冒险的用户带来破坏:

  1. 在 v1 中让它成为一个可选的依赖,然后真正关心它的人可以用一个特殊的标志来编译它来启用它。 通过这种方式,他们选择“预览”默认情况下最终将成为 v2 客户端的一部分。

  2. 将 U2F 片段拆分为单独的二进制文件,并在运行时检测它的存在。 然后,尝试将 AWS CLI 与 U2F 结合使用的用户将被告知“安装其他工具”以使其工作。 因此,例如,在 Mac 上,我离幸福只有一个brew install aws-cli-u2f 。 😃

是的,我很乐意安装一个可选的 compile-from-source 模块来获得此功能。 它只需要在开发人员机器上——几乎总是已经有编译器——而不是在服务器上。

python-u2f-host 的替代方案是python-fido2 ,它使您无需使用 USB HID 的 C 库,这意味着您只需要

我会为此屏住呼吸👍

据我了解这个问题,STS/IAM 必须获得 API 支持,将安全密钥作为 MFA 令牌,然后再继续进行?

据我了解这个问题,STS/IAM 必须获得 API 支持,将安全密钥作为 MFA 令牌,然后再继续进行?

任何人都可以阐明这一点吗? 当然,如果它还没有得到支持,那么它就在拐角处......?

编辑:

请不要让这成为那些令人畏惧的案例之一,公司假设他们的客户都不关心某个功能,因为他们实施了不是超级有用的版本,然后没有人使用它。

我从不使用 Web UI 登录 Amazon 控制台。 这对我来说都是 CLI 驱动的,因为我有几个帐户需要处理(等等)。 即使我_确实_使用网络用户界面登录,那么就目前而言,我需要使用_重复帐户_来处理我所有用于 U2F 的现有帐户,因为我仍然需要使用我的旧 Google/LastPass /whatever 用于所有aws-cli内容的验证器。

所以... AWS 的 U2F 支持有_潜力_成为我会_真正_热衷的东西,但如果没有 CLI 支持,它还不值得触及。 我想很多人都在同一条船上。

@jeffparsons完全同意 CLI/SDK 的 U2F MFA 确实是必要的。 我打赌他们会拒绝使用 libusb/python-fido 方法,因为它不能很好地映射到在 ruby​​/java ect SDK 上执行它。 具有一键式挑战响应的 U2F 将非常普遍。

顺便说一句,您可以通过在另一个帐户上扮演角色来非常轻松地在 Web 控制台中切换帐户
喜欢:
https://signin.aws.amazon.com/switchrole?roleName=SomeAdminRole&account=YourAccountNumberOrAlias
看:
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html

然后,您可以在页面右上角的用户/帐户下拉列表中看到角色切换器

这里也是一个很好的解决方案https://github.com/kreuzwerker/awsu

使用多个多帐户设置,所有这些设置都带有单独的 idp,使用相同的 U2F 对我来说将是一个巨大的减轻。
我也不会安装/编译额外的依赖项以在 v1 中获得它作为预览。

关于 aws 方面的问题有什么动向吗?

就其价值而言,aws-vault 似乎非常接近合并 U2F 支持: https :

也就是说,我绝对赞成向官方 AWS CLI 工具添加原生 U2F 支持。

就其价值而言,aws-vault 似乎非常接近合并 U2F 支持: 99designs/aws-vault#316

不,这只是使用 Yubikey 创建 TOTP 令牌。 这是一种允许您使用 Yubikey 但它不是 U2F 的解决方法。

(这似乎与awsu所做的相同。)

awscli的整个 MFA 设置起来很麻烦,缺少 yubikey 支持也无济于事。
2019 年的 MFA 应该是一个必须不是前沿的特征。

这方面有什么进展吗?

刚遇到这个。 如果您不打算在 cli 中支持 Yubikey,请从 Web 控制台中删除对 Yubikey 的支持。 不得不在谷歌上搜索这些东西并发现 AWS 不支持它所宣传的东西,这是一个巨大的时间浪费

这个问题已经开放了 440 天了,还没有解决,这太荒谬了。

如前所述,CLI 支持将受到高度赞赏

您好,我们希望通过https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html为所有人类用户强制执行 MFA(因为缺少更好的解决方案)但现在事实证明我们要么必须:

a) 完全放弃这个想法,或
b) 强制所有人从使用 U2F 降级到 TOTP。

IAM 不支持多个 MFA 设备的事实也是一个坏笑话......

快到 2020 年了。方便且安全(阅读:U2F)MFA 解决方案是必须的,在我看来不是奢侈品。 特别是在恶意行为者可能造成严重经济损失的地区。

AWS,请,请,请,请大家齐心协力,努力在整个生态系统中增强对 MFA 的支持(CLI、移动应用程序、AWS SSO——它也不支持 U2F!)

IAM 不支持多个 MFA 设备的事实也是一个坏笑话......

这真的很尴尬。 只注册一台设备是一种非常糟糕的做法,所以来亚马逊,尽快解决这个问题!

这个问题已经开放了 440 天了,还没有解决,这太荒谬了。

它比那更糟。 2013 年,来自亚马逊的某人写道:

不幸的是,目前每个帐户只能有一个 MFA。
然而,我已经向我们的开发团队提出了这一点,将其视为未来开发的一项功能。
https://forums.aws.amazon.com/thread.jspa?threadID=137055

我会理解团队可能很忙或不忙,但事实上没有人甚至懒得回答这个问题是我担心的。 这不是一些人手不足、报酬过低的开源项目,这是可以原谅的,而是 AWS 本身。

491天,500开香槟! :香槟: :confetti_ball:

我认为亚马逊真的专注于美元所在的政府项目。 这个线程是为什么我通常不建议任何人使用 AWS 的一个例子。
当然,曾经有一段时间他们是最前沿的,但现在......它只是缺乏基本功能。 我知道这不合时宜,但另一个例子是 Route 53 仍然不支持 DNSSEC,所以你开始吧。 哦,是的,MFA 应该称为 SFA,因为 AWS 实现中没有“Multi”。

抱歉我的咆哮,但很可能除了真正想要该功能的安全人员之外,没有人会看这个帖子。
再过几天我们就达到 500 了 :) !

我真的很想添加这个。 我发现手机非常分散注意力,我宁愿在与 AWS 服务交互时不必每小时多次拔出手机。

这是几天前更新的 - https://aws.amazon.com/premiumsupport/knowledge-center/authenticate-mfa-cli/

这对任何人都有帮助吗?

这对任何人都有帮助吗?

可悲的是没有。 恕我直言,这是另一个问题,AWS 需要一些复杂的脚本才能使用令牌代码。 我使用第 3 方aws-mfa python 脚本 PyPi 模块来解决这个问题。
但是感谢您的想法@chris-bateman !

这是几天前更新的 - https://aws.amazon.com/premiumsupport/knowledge-center/authenticate-mfa-cli/

在那篇文章的底部有一个“我们可以改进的地方?让我们知道”按钮,我一定会按下它。

我做了我的部分并在“让我们知道部分”中留下了评论。 如果实现此功能,我也会非常兴奋。

同样感谢您发布@steinybot

添加一个悲伤的评论,它尚未实施
why

不到两个月,两周年纪念日即将到来。 现在应该快到了吧? 对?

好消息:如果您不使用 aws-vault,则应该使用。 他们刚刚介绍了 Yubikey 支持。 如果你有一个支持 TOTP 的 yubikey,那么你可以在里面添加 MFA 代码。 虽然理想的情况是期待亚马逊提供它,但我们都同意他们只是不在乎杰夫变得更富有。
它对角色等有很大的支持,我很遗憾这是一个 3rd 方工具,但这就是我喜欢开源的地方:你有选择。
链接: https :

虽然 aws-vault 很棒,但它支持 TOTP,而不是 U2F。

经过多年的等待,我现在使用https://github.com/kreuzwerker/awsu

@nbraud看起来他们使用的 python 接口不提供 linux 轮子,因此安装它需要用户安装编译器。 目前这不是安装 cli 的要求,因此添加该库对许多用户来说将是一个重大变化。

虽然@jeffparsons指出了一些合理的潜在解决方法,如果您使用具有更多依赖项的其他较大的库之一,我还将指出应该考虑一个较小的 Python 库: pyu2f 。 它还依赖于本机 USB HID 库与 U2F 密钥通信,但它只有一个 Python 依赖项: six 。 它打包了自己的基于ctypes的绑定到与 MacOS、Linux 和 Windows 兼容的 OS HID 调用,并且可能涵盖“足够”的用例。

我们还有人在做这方面的工作吗? aws-cli团队会接受此功能的任何原型的补丁吗?

编辑:IAM 用户指南中阅读更多内容后,它看起来在 API 级别不支持 U2F,因此即使aws-cli支持交互式 U2F 令牌身份验证,它看起来也不像GetSessionTokenAssumeRole在这一点上支持这一点(如下引述):

了解 API 操作的 MFA 保护的以下方面很重要:

  • MFA 保护仅适用于临时安全凭证,必须使用 AssumeRole 或 GetSessionToken 获得。
  • 您不能将受 MFA 保护的 API 访问与 U2F 安全密钥一起使用。

另外,关于@kiwimato的社会评论:

虽然理想的情况是期待亚马逊提供它,但我们都同意他们只是不在乎杰夫变得更富有。

请意识到这是一个软件开发线程,而不是资本主义辩论论坛。 AWS 团队由真正的人组成,根据我的经验,他们对修复botocore非常敏感。 如果某些事情困扰着您,请意识到其中大部分内容的开源性质意味着您可以帮助提供修复或至少帮助集思广益一些选项。

然而,虽然底层 AWS API 本身似乎不支持 MFA 的 TOTP 之外的任何东西,但看起来这个问题可能比aws-cli根本不支持客户端功能更重要。 希望一旦 API 支持 U2F,AWS 就能碰上这张票,这样我们就可以获得客户支持。

至少这样的解决方案将有助于您的机器和手机之间的上下文切换
https://authy.com/

是否有任何预计到达时间? 非常令人担忧的是,显然世界上没有人在他们的 AWS cli 使用中使用良好的 MFA 实践。

非常令人担忧的是,显然世界上没有人在他们的 AWS cli 使用中使用良好的 MFA 实践。

@james-callahan 这不是真的。 我们将角色的访问权限限制为仅通过 MFA 进行身份验证的角色。 例如:

AssumeRolePolicyDocument:
  Version: '2012-10-17'
  Statement:
    - Effect: Allow
      Principal:
        AWS: !Sub
          - arn:aws:iam::${Account}:root
      Action:
        - sts:AssumeRole
      Condition:
        Bool:
          aws:MultiFactorAuthPresent: 'true'

然后我们使用一个名为aws-mfa的工具来管理从 STS 获取临时凭证并更新我们的 AWS 凭证文件。 还有其他方法可以管理与 STS 的交互以实现同一目标。

这张票专注于添加专门对 U2F 的支持。

@james-callahan 这不是真的。 我们将角色的访问权限限制为仅通过 MFA 进行身份验证的角色。

这仅适用于 TOTP; 由于易于钓鱼 TOTP 凭据等,不应将其视为高质量的第二个因素。
更糟糕的是,AWS 不允许您将 U2F 和 TOTP 设备同时注册到单个 IAM 用户,因此如果您想使用 U2F 进行 UI 访问,则不能使用来自 cli 的任何 MFA。

对于那些需要它的用户,我们创建了两个帐户:

  1. 控制台用户,在那里他们启用 U2F 或无法访问任何内容。
  2. 用于 cli 访问的用户,他们在其中添加访问密钥并启用 MFA 或无法访问任何内容。

从仅限 cli 访问的帐户中钓鱼 TOTP 非常困难。

@craighurley
对于 IMO 的变通方法,这看起来有点矫枉过正。 您必须维护 2 个帐户才能对 AWS 组织进行安全管理,才能在控制台上使用 U2F。
对于任何想要使用 U2F 的公司,我不认为这是一个合理的解决方案。

此页面是否有帮助?
0 / 5 - 0 等级