申请法院强制执行的程序:对AWS控制台登录强制执行MFA 但不对API调用强制执行

关于申请法院强制执行的程序的问题,在aws consle中经常遇到, 我希望强制所有 IAM 用户(本地和远程)启用和激活他们的 MFA 设备。

我希望强制所有 IAM 用户(本地和远程)启用和激活他们的 MFA 设备。

我正在尝试以下策略

{
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*",
      "Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}
}

但是,无论您如何通过控制台或 API 访问服务,此策略都适用。

所有用户都完成了很多自动化,他们的自动化中断了,因为没有暗示 MFA 身份验证。

作为第一步,我们希望每个人都至少为控制台登录启用 MFA;但同样不应该强制他们将 MFA 用于自动化中使用的 API 调用。

这是否可以通过 IAM 策略实现?

谢谢

33

诀窍是反向检查...而不是只允许如果 aws:MultiFactorAuthPresent 是真的,否认它是假的。

以下是关于自助 MFA 管理的文档:http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html

建议的完整政策是:

{
    "Version": "2012-10-17",
    "Statement":[
        {
            "Sid": "AllowAllUsersToListAccounts",
            "Effect": "Allow",
            "Action":[
                "iam:ListAccountAliases",
                "iam:ListUsers",
                "iam:GetAccountSummary"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowIndividualUserToSeeAndManageTheirOwnAccountInformation",
            "Effect": "Allow",
            "Action":[
                "iam:ChangePassword",
                "iam:CreateAccessKey",
                "iam:CreateLoginProfile",
                "iam:DeleteAccessKey",
                "iam:DeleteLoginProfile",
                "iam:GetAccountPasswordPolicy",
                "iam:GetLoginProfile",
                "iam:ListAccessKeys",
                "iam:UpdateAccessKey",
                "iam:UpdateLoginProfile",
                "iam:ListSigningCertificates",
                "iam:DeleteSigningCertificate",
                "iam:UpdateSigningCertificate",
                "iam:UploadSigningCertificate",
                "iam:ListSSHPublicKeys",
                "iam:GetSSHPublicKey",
                "iam:DeleteSSHPublicKey",
                "iam:UpdateSSHPublicKey",
                "iam:UploadSSHPublicKey"
            ],
            "Resource": "arn:aws:iam::accountid:user/${aws:username}"
        },
        {
            "Sid": "AllowIndividualUserToListTheirOwnMFA",
            "Effect": "Allow",
            "Action":[
                "iam:ListVirtualMFADevices",
                "iam:ListMFADevices"
            ],
            "Resource":[
                "arn:aws:iam::accountid:mfa/*",
                "arn:aws:iam::accountid:user/${aws:username}"
            ]
        },
        {
            "Sid": "AllowIndividualUserToManageTheirOwnMFA",
            "Effect": "Allow",
            "Action":[
                "iam:CreateVirtualMFADevice",
                "iam:DeactivateMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:RequestSmsMfaRegistration",
                "iam:FinalizeSmsMfaRegistration",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice"
            ],
            "Resource":[
                "arn:aws:iam::accountid:mfa/${aws:username}",
                "arn:aws:iam::accountid:user/${aws:username}"
            ]
        },
        {
            "Sid": "BlockAnyAccessOtherThanAboveUnlessSignedInWithMFA",
            "Effect": "Deny",
            "NotAction": "iam:*",
            "Resource": "*",
            "Condition":{
                "BoolIfExists":{ "aws:MultiFactorAuthPresent": "false"}
            }
        }
    ]
}

最重要的部分是最后一个语句,它拒绝。

{
    "Sid": "BlockAnyAccessOtherThanAboveUnlessSignedInWithMFA",
    "Effect": "Deny",
    "NotAction": "iam:*",
    "Resource": "*",
    "Condition":{
        "Bool":{ "aws:MultiFactorAuthPresent": "false"}
    }
}

(BoolIfExists 更改为 Bool)它将允许 IAM 访问密钥绕过 MFA 的要求,同时仍要求您在通过 AWS 控制台登录时使用 MFA。(注意:这不适用于所有 API;有些(例如 ECR)始终提供“MultiFactorAuthPresent”属性,这会此解决方法)

请注意,它允许用户创建访问密钥并更改其密码,而 deny 子句仅阻止非 IAM 操作...这意味着,如果在某个账户上禁用了 MFA,则无需 MFA 检查即可更改用户的密码或预配新的访问密钥,如果您进行了 Bool 更改,则这些新的访问密钥将能够访问用户拥有的所有安全密钥。

我建议使用类似的政策来代替:

注意:由于注释中提到的安全问题,不应逐字使用此策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAllUsersToListAccounts",
            "Effect": "Allow",
            "Action": [
                "iam:ListAccountAliases",
                "iam:ListUsers"
            ],
            "Resource": [
                "arn:aws:iam::accountid:user/*"
            ]
        },
        {
            "Sid": "AllowIndividualUserToSeeTheirAccountInformation",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:GetAccountSummary",
                "iam:GetLoginProfile"
            ],
            "Resource": [
                "arn:aws:iam::accountid:user/${aws:username}"
            ]
        },
        {
            "Sid": "AllowIndividualUserToListTheirMFA",
            "Effect": "Allow",
            "Action": [
                "iam:ListVirtualMFADevices",
                "iam:ListMFADevices"
            ],
            "Resource": [
                "arn:aws:iam::accountid:mfa/*",
                "arn:aws:iam::accountid:user/${aws:username}"
            ]
        },
        {
            "Sid": "AllowIndividualUserToManageThierMFA",
            "Effect": "Allow",
            "Action": [
                "iam:CreateVirtualMFADevice",
                "iam:DeactivateMFADevice",
                "iam:DeleteVirtualMFADevice",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice"
            ],
            "Resource": [
                "arn:aws:iam::accountid:mfa/${aws:username}",
                "arn:aws:iam::accountid:user/${aws:username}"
            ]
        },
        {
            "Sid": "DoNotAllowAnythingOtherThanAboveUnlessMFAd",
            "Effect": "Deny",
            "NotAction": "iam:*",
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}
11

为每个人创建 2 个 IAM 用户:

一个用于强制执行 MFA 的 AWS 控制台登录,以及

一个用于没有密码且不强制 MFA 的 API 使用

8

为后代发布。我尝试使用 Josh Han 发布的方法,但来自强制控制台 MFA 账户的 api 调用对于某些 AWS 服务如弹性文件系统和某些 s3 api 调用失败。当引发支持票时,来自 AWS 的响应是,“有一个针对此精确问题的功能请求,因为目前没有可靠的机制来强制 MFA 仅用于控制台。我已将您的账户添加到请求其他用户的 MFA 工作账户列表中。

6

我有一个不同的解决方案。我有一个“ForceMFA”组,它不允许你做任何事情 (除了分配 MFA),除非你启用了 MFA。我有一个小脚本,每小时运行一次,扫描所有用户,并将任何没有 MFA 的用户添加到“ForceMFA”组中。同样的脚本也从组中删除启用了 MFA 的用户。这样,我强制人们启用 MFA,但不需要 MFA

是我使用的小 Powershell 6 脚本:https://gist.github.com/kalpik/36beffd25bda2a0c38905176f7e557aa

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(541)
储存程序原理:使用Android 应用程序引擎 + 数据存储存储存储个人资料图像的最佳方式
上一篇
Yl mf:DAL-yl未定义(yl is)
下一篇

相关推荐

  • android api文档中文版下载:Android API参考文档

    Android API文档中文版可以在官方网站上下载,具体步骤如下:访问Android官网:https://.android.google.cn/…

    2023-03-31 05:39:50
    0 33 84
  • postman 网页版:使用 Postman 测试 API 接口

    示例示例Postman 网页版是一款强大的 API 开发工具,它提供了一个简单易用的界面,可以让开发者快速测试和调试 API 接口。Postman 网页版支持多种 HTTP 请求方法,包括 GET、POST、PUT、DELETE、PATCH 等,还支持多种格式的参数,如 JSON、XML、form-data 等,可以非常方便地进行 API 测试。…

    2023-04-28 00:30:59
    0 84 80
  • 僵尸毁灭工程服务器:如何从android模拟器对kik的服务器API进行反向工程

    关于僵尸毁灭工程服务器的问题,在bluestacks kik中经常遇到,我在kik messenger中有一个群组聊天,已经有 50 多个成员。我需要自动执行一些操作,例如基于参与度的声誉点,以及踢那些在 XXX 天内没有发布任何内容的非活动成员。我看过API reference,似乎可以在组中与机器人进行交互的唯一方法是使用 @ mentions。这意味着我们无法将它们添加到组中,并且它们也无法监视。…

    2022-12-29 01:22:13
    0 31 29
  • 农村合作医疗小程序:AndroidWear:从应用程序获取医疗参数的 API

    关于农村合作医疗小程序的问题,在oxygen app for android中经常遇到,我想知道是否有一种方法可以在 Android 应用程序中从能够测量的 Android Wear 设备下载医疗参数。具体来说,我会特别感兴趣的是获取心率,血氧饱和度和 amp;体温。…

    2022-12-28 10:54:58
    0 60 23
  • 嗅探Android应用程序以查找APIURL

    我很好奇,我怎么能弄清楚一个 Android 应用程序 (我已经安装的任何应用程序) 使用的 API URL,如果它使 API 调用一些在线服务器 (例如 RESTful 服务)。我想我必须捕获设备上的数据包,也许在 Wireshark 或其他东西中分析它们以找到 URL?…

    2022-11-25 04:14:26
    0 63 61
  • 如何从谷歌静态地图Api卫星图像获取日期信息

    使用 Google 静态地图 API 下载卫星图像时,是否还有一种方法可以获取一些元数据,例如何时(年,月,日)拍摄卫星图像?…

    2022-12-17 04:43:37
    0 63 74
  • .asSet(...)是否存在于任何API中

    我正在寻找一个非常简单的方法来创建一个集。…

    2022-11-11 15:18:25
    0 23 47
  • 负载均衡器和APIGateway混淆

    我一直致力于移动技术,现在我正在进入后端系统,更具体地说是系统设计。我不断遇到关于 api 网关和负载均衡器角色的矛盾陈述。谷歌搜索只返回了同样的六个结果,主要集中在一些著名服务提供的负载均衡器或 api 网关服务的实现上。我将在这里列出我面临的所有困惑,希望有人能澄清所有这些。…

    2022-11-20 00:28:29
    0 88 49

发表评论

登录 后才能评论

评论列表(3条)