如何使用IAM策略AWS仅向S3存储桶的根帐户用户授予访问权限?

莱昂纳多运动

我想创建一个只有根帐户才能拥有完全访问权限的s3存储桶策略,该怎么做?

例:

   {
    "Version": "2012-10-17",
    "Statement": [            
        {
            "Sid": "Allow full access for root account user",
            "Effect": "Allow",
            "Principal": {
                "AWS": "root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::ih-deploy-bucket/*",
                "arn:aws:s3:::ih-deploy-bucket"
            ]
        }
    ]
}

或添加类似条件

"Condition": {
    "StringEquals" : {"aws:username" : "rootUser"} 
}
httpdigest

这是显式Deny带有的极少数(如果不是唯一)用例之一NotPrincipal

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "NotPrincipal": {
        "AWS": "arn:aws:iam::<your-account-number>:root"
      },
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::ih-deploy-bucket/*",
        "arn:aws:s3:::ih-deploy-bucket"
      ]
    }
  ]
}

这将明确拒绝不是(并且不仅是)根帐户用户的所有主体,包括该帐户中的IAM用户,假定的角色会话和联盟用户。而且由于root用户始终对所有资源都具有明确的“允许所有操作”,因此实际的Allow由root用户的基于身份的权限提供,因此root用户将有权访问该存储桶。

之所以可行,是因为您帐户中使用的呼叫者身份始终同时具有多个主体,IAM正在评估它们的策略声明:

  1. 账户本金 arn:aws:iam::<your-account-number>:root
  2. 用户,假定角色或联合用户主体

在明确的情况下,Allow如果您仅Principal在策略语句中的规则中使用根帐户主体,则该帐户中的任何用户都将匹配允许并被授予访问权限,因为该帐户主体始终是用户主体列表的一部分在该帐户中。

但是,对于Deny带有的NotPrincipal,情况有所不同。在此,的列表NotPrincipal必须将呼叫者身份的所有主体列入白名单,这样才能被拒绝。

这个事实在AWS文档中对NotPrincipal以下方面有所启发https : //docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notprincipal.html

当将NotPrincipal与Deny一起使用时,还必须指定未拒绝的委托人的帐户ARN。否则,该策略可能会拒绝访问包含主体的整个帐户。根据您包含在策略中的服务,AWS可能会先验证帐户,然后再验证用户。如果正在评估一个假设角色的用户(正在使用某个角色的人),则AWS可能首先验证该帐户,然后验证该角色,然后再验证该假设角色的用户。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

S3存储桶策略,如何从另一个帐户允许IAM组?

S3:如何授予对多个存储桶的访问权限?

如何为多个IAM用户设置S3策略,以使每个人只能访问其个人存储桶文件夹?

即使使用存储桶和/或用户策略,也无法在AWS s3存储桶上进行访问

跨帐户角色授予S3存储桶访问权限-权限被拒绝

S3存储桶AWS您无法授予公共访问权限,因为已为此帐户启用了阻止公共访问设置

是否可以使用存储桶策略授予对AWS S3中另一个账户拥有的对象的访问权限?

仅授予特定用户对S3存储桶的访问权限,无公共访问权限

如何使用boto3为IAM用户授予S3存储桶的完全权限?

如何使用简单的s3存储桶策略授予对加密存储桶的跨帐户访问权限?

AWS:无法通过s3存储桶策略授予s3访问权限

如何仅通过VPN连接限制IAM用户对S3存储桶的访问

即使在S3存储桶策略中指定了IAM用户,访问也会被拒绝

使用IAM角色从脚本访问S3存储桶

如何授予AWS用户访问s3存储桶托管的网站的权限?

通过AWS PHP SDK向IAM用户授予对AWS S3文件的权限

如何使用经过身份验证的经过身份验证的用户授予对非公共Amazon S3存储桶文件夹的访问权限

向没有AWS账户的用户授予对AWS S3存储桶/文件夹的访问权限

AWS IAM策略:如何更改AWSLambdaFullAccess策略以仅允许访问一个S3存储桶?

AWS S3:特定存储桶的用户策略

如何为AWS和CF用户分配对S3存储桶的访问权限?

使用AWS IAM用户角色凭证的AWS S3存储桶API调用:

AWS S3 存储桶策略

AWS S3 存储桶策略访问被拒绝

AWS:S3 存储桶 AWS 您无法授予公共访问权限,因为此帐户已启用阻止公共访问设置

向 Cognito 用户授予对 aws S3 的读/读访问权限

为什么即使我在存储桶策略中授予用户权限,用户也无法访问我们的 S3 存储桶?

我应该授予什么 aws 权限来访问其他 s3 存储桶

尝试授予对 S3 存储桶的云端访问权限,但得到“策略无效操作”