【问题标题】:How to make secrets set by non-admin user inaccessible by aws administrator?如何使 aws 管理员无法访问非管理员用户设置的机密?
【发布时间】:2019-01-06 13:38:24
【问题描述】:

我在 AWS 中有一个要求。非管理员用户需要在 AWS Secrets Manager 中写入某些机密。 AWS 管理员不应访问这些机密。

这里 AWS 管理员是对用户附加“AdministratorAccess”策略的人,非管理员是管理员创建的用户,并且仅授予对某些服务的有限访问权限。

我想将我的应用程序的“用户名和密码”存储在机密管理器中。 AWS Lambda 也将使用相同的凭证。

我可以写以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "secretsmanager:*",
            "Principal": {"AWS": "arn:aws:iam::123456789011:user/app-admin-user"},
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": "secretsmanager:*",
            "Principal": {"AWS": "arn:aws:iam::123456789011:user/aws-admin-user"},
            "Resource": "*"
        }
    ]
}

但此政策仅拒绝单个用户。我想在单一策略中拒绝账户中的所有 AWS 管理员。

我试着用app-admin-userNotPrincipal 而不是Principal,如下所示:

{
            "Effect": "Deny",
            "Action": "secretsmanager:*",
            "NotPrincipal": {"AWS": "arn:aws:iam::123456789011:user/app-admin-user"},
            "Resource": "*"
 }

但这会让AccessDeniedExceptionUser does not have permission to specify explicit deny 因为用户app-admin-user 不是AWS 管理员。

我附上这个政策文件和我正在创建的秘密。

除了使用 AWS Secrets Manager 来解决此问题之外,如果有其他可用的解决方案,请提出建议。

【问题讨论】:

    标签: amazon-web-services aws-secrets-manager


    【解决方案1】:

    article 描述了如何通过使用Conditions 而不是NotPrincipal 将S3 存储桶的访问权限限制为特定的IAM 角色。

    您可以对secretsmanager 应用相同的逻辑,以限制对与用户 ID 模式不匹配的任何 IAM 用户的访问:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "secretsmanager:*",
          "Resource": "*",
          "Condition": {
            "StringNotLike": {
              "aws:userId": [
                "AROAEXAMPLEID:*",
                "AIDAEXAMPLEID",
                "111111111111"
              ]
            }
          }
        }
      ]
    }
    

    要获取 IAM 用户的 userId,请运行 aws iam get-user -–user-name USER-NAME 命令。

    【讨论】:

    • 嘿,我知道已经有几年了,但你不知道这个答案挽救了我多少生命。只要有明确的拒绝,AWS 权限系统都设置为拒绝,当我需要将除我之外的所有管理员排除在他们默认可以执行的操作之外时,这让我非常困惑。搜索了一段时间,一无所获——这真的救了我!!!!
    • 感谢您的评论,很高兴听到它有帮助:)
    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多