AWS S3 和 2 因子(多因子)

信息安全 多因素 aws 亚马逊-s3
2021-09-11 13:05:11

我有一个客户希望使用 AWS S3 存储桶将文件传输到其他客户。该数据可能包含某种受保护的数据。

我想将 S3 设置为使用 2-factor 或 MFA 进行登录/连接。

我查看了一堆 AWS 文档,发现了如何使用 MFA 来防止 S3 数据被删除......我发现了如何使用 MFA 保护 AWS 账户本身,但这不适用于访问 S3 的客户.

我看到 S3 使用一个长而复杂的随机字符串的访问 ID 和一个更长的私钥。

问题
1. 我可以设置 S3 以使用某种 2 因素身份验证吗?
2. 访问 ID 是否计入 2 个因素,因为它是随机的且与人名或其他任何东西无关?

还有其他想法吗?

3个回答

MFA 并非旨在防止任何文件删除或更改。它的唯一目标是使窃取用户凭据变得更加困难。

此外,您无需为 S3 存储桶(或对象)设置 MFA,而是为用户设置 MFA。该用户的权限由 ACL 和策略指定。

因此,您可以通过某种方式“为 S3 启用 MFA”。创建用户、启用 MFA、分配策略。但签名 URL 更适合您客户的需求。

这现在可以通过 AWS S3 实现。以下策略允许账户一、二和三的用户使用 MFA 放置和删除对象。

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"AWS": [
      "ACCOUNT-ONE-ID",
      "ACCOUNT-TWO-ID",
      "ACCOUNT-THREE-ID"
    ]},
    "Action": [
      "s3:PutObject",
      "s3:DeleteObject"
    ],
    "Resource": ["arn:aws:s3:::ACCOUNT-A-BUCKET-NAME/*"],
    "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
  }]
}

同样,您可以编写自己的策略来启用 MFA。

我可以设置 S3 以使用某种 2 因素身份验证吗?

不,因为 S3 没有自己的身份验证。

访问 ID 是否计入 2 个因素,因为它是随机的并且与人名或其他任何东西无关?

不,“双因素认证”中的因素是不同类型的东西;通常对于 2FA,它是您知道的东西(密码、密钥)和您拥有的东西(硬件 OTP 设备)。之所以经常推荐多因素身份验证,是因为攻击者很难获得这两种类型的访问权限 - 物理窃贼可以窃取您的手机或密钥卡,但不知道您的密码,远程攻击者可以窃取您的密码或密钥,但无法访问您的 OTP 设备。

此外,Amazon 密钥/秘密密钥对是您访问 AWS API 所需的唯一东西(您不需要知道用户名),因此它不仅不是第二个因素,而是唯一一个因素。


作为第一步,在大多数情况下启用S3 存储桶版本控制是一个非常好的主意。这将存储旧版本的文件,这会增加您的存储成本,但如果您不小心删除了一些重要的东西,它可以成为救命稻草。

在单个 Amazon 账户中,您可以创建子账户并使用 IAM 管理它们。这通常是您应该管理多个用户的方式,而不是让他们共享访问同一个帐户的权限。借助 IAM,您可以通过分配适当的策略来为每个用户添加最低限度的必要权限因此,如果客户端需要能够读取受保护的文件,但不需要写入它们,您可以只授予它们读取权限 - 因此,任何违反其凭据的行为都只会授予攻击者读取权限。同样,您可以提供不删除的写入权限。您还可以通过文件路径限定 S3 权限,并且通常具有很大的灵活性来精确定位您需要的内容。