尝试上传到 s3 存储桶时被拒绝访问

卡伦阿加瓦尔

我正在尝试使用 NodeJs (aws-sdk) 将对象上传到 AWS 存储桶,但出现访问被拒绝错误。

我正在使用 accessKeyId 和 secretAccessKey 的 IAM 用户也被授予访问我尝试上传到的 s3 存储桶的权限。

后端代码

const s3 = new AWS.S3({
        accessKeyId: this.configService.get<string>('awsAccessKeyId'),
        secretAccessKey: this.configService.get<string>('awsSecretAccessKey'),
        params: {
          Bucket: this.configService.get<string>('awsPublicBucketName'),
        },
        region: 'ap-south-1',
      });

const uploadResult = await s3
        .upload({
          Bucket: this.configService.get<string>('awsPublicBucketName'),
          Body: dataBuffer,
          Key: `${folder}/${uuid()}-${filename}`,
        })
        .promise();

桶策略

{
    "Version": "2012-10-17",
    "Id": "PolicyXXXXXXXXX",
    "Statement": [
        {
            "Sid": "StmtXXXXXXXXXXXXXX",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::some-random-bucket"
        },
        {
            "Sid": "StmtXXXXXXXXXXX",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::XXXXXXXXXX:user/some-random-user"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::some-random-bucket"
        }
    ]
}
埃尔米亚·埃斯坎达里

你有一个明确的拒绝声明,拒绝任何人在 上做任何与 S3 相关的事情some-random-bucket

根据官方IAM 策略评估逻辑,这将覆盖策略中的任何允许语句

您可以执行以下任何操作:

  1. 从策略中删除拒绝语句
  2. 修改拒绝语句并用于从拒绝语句NotPrincipal中排除some-random-user
  3. 修改拒绝语句并使用aws:PrincipalArn带有ArnNotEquals条件运算符的条件键从拒绝语句中排除some-random-user,即
{
  "Version": "2012-10-17",
  "Id": "PolicyXXXXXXXXX",
  "Statement": [
    {
      "Sid": "StmtXXXXXXXXXXXXXX",
      "Effect": "Deny",
      "Action": "s3:*",
      "Principal": "*",
      "Resource": "arn:aws:s3:::some-random-bucket",
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::XXXXXXXXXX:user/some-random-user"
        }
      }
    },
    {
      "Sid": "StmtXXXXXXXXXXX",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXXXXXXXX:user/some-random-user"
      },
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::some-random-bucket"
    }
  ]
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章