amazon-web-services - AWS IAM 强制 MFA,但允许第一次更改密码
问题描述
您如何强制 AWS IAM 用户使用 MFA,但允许他们在首次登录时更改密码?
如果您遵循AWS Docs并强制执行 MFA,则新用户在首次获得账户时无法更改密码。
我知道您可以强制或不强制 MFA ,并允许用户管理自己的密码和凭据。此外,AWS 有办法解决此问题,但不建议这样做:
此示例策略不允许用户在登录时重置密码。新用户和密码过期的用户可能会尝试这样做。您可以通过将 iam:ChangePassword 添加到语句 DenyAllExceptListedIfNoMFA 来允许这样做。但是,IAM 不建议这样做。允许用户在没有 MFA 的情况下更改密码可能存在安全风险。
那么“推荐”的方式是什么?
AWS 论坛上也有人问过这个问题,但没有真正的答案。
解决方案
此处推荐的路径是使用SSO / identity federation,但我提出了一种手动的单一策略解决方案,如果您还没有 SSO,则可以更轻松地进行管理。我的解决方案仍然存在风险,但仅限于初始帐户设置过程。它涉及使用标签手动标记新的 IAM 用户NewUser
,然后在他们重置密码并配置 MFA 后手动取消标记。
以下指南假定您使用AWS 推荐的策略来允许经过 MFA 身份验证的 IAM 用户在我的安全凭证页面上管理他们自己的凭证。
在您的块所在的位置编辑您的 MFA 策略"Sid": "DenyAllExceptListedIfNoMFA"
,并将其替换为以下内容:
{
"Sid": "DenyAllExceptListedIfNoMFAAndNewUser",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken",
"iam:ChangePassword"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
},
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
},
"StringNotEqualsIfExists": {
"iam:ResourceTag/NewUser": "true"
}
}
}
创建一个新用户并添加一个NewUser
标签,其值设置为true
。
将凭据发送给新用户。在他们首次登录后,NewUser
从他们的 IAM 用户资源中删除标签。
您可以在此处查看我的完整政策示例。
推荐阅读
- r - 在 R 中的 foreach() 之后使用 dopar 时没有重新设置值
- docker - Docker 上的 Apache2,卷上的文件不是渲染而是下载
- ruby-on-rails - 从开发环境中的应用程序收到不完整的响应
- javascript - jQuery隐藏过滤后有0个孩子的父母
- javascript - 构建后颤动Web重新加载资产数据
- html - 在 Angular 代码中,在 ngFor Iteration 之后,数据按列显示,但希望数据按行显示
- latex - 如何在 MNRAS LATEX 纸上添加子图?
- java - Swing MouseMoved 事件是否按输入顺序调度?
- python - ipython交互模式下函数的回声是什么?
- r - R中多项式GLM的SE逆估计(投资者:投资)