如何使用 MFA 保护 IAM 访问密钥?

How to secure IAM access key with MFA?

我知道可以通过在密码上放置另一层 (virtual/hardware) MFA 来增强安全性。我可以通过 MFA 保护访问密钥吗?

我试图解决的问题是,有时我会不小心将访问密钥提交到 github。所以我需要一个 MFA 的东西,

是的,您可以通过在 IAM 策略中添加一个要求最近进行 MFA 身份验证的条件来实现。例如,

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["ec2:*"],
    "Resource": ["*"],
    "Condition": {"NumericLessThan":      {"aws:MultiFactorAuthAge": "3600"}}
  }]
}

如果您在过去一小时内通过 MFA 进行身份验证,则允许访问 ec2 API。文档中有more examples

这需要您使用您的凭据和 MFA 代码调用 GetSessionToken api,然后将返回的临时凭据用于您的实际 api 调用。

如果您的代码是 运行 在 EC2 上,那么您应该改用 IAM 角色 - 这会设置实例上可用的凭据,每隔几个小时轮换一次。