代码之家  ›  专栏  ›  技术社区  ›  demonplus

从不同的用户帐户将文件上载到Amazon S3 bucket

  •  1
  • demonplus  · 技术社区  · 6 年前

    我需要从MVC上传文件到Amazon S3 bucket。NET核心C#应用程序。如何组织此过程,使我的应用程序的不同用户无法访问彼此的文件?

    我想他们应该共享一个bucket,我不能为每个用户创建bucket?但我应该指定什么,以便我的应用程序的每个用户只能下载/列出他/她自己的文件?

    1 回复  |  直到 6 年前
        1
  •  2
  •   SCouto    6 年前

    为什么需要创建一个桶?至于我的理解,完全可以由用户创建一个。

    无论如何,如果您确实需要一个bucket,可以通过 IAM 政策。

    以下是一个用户的策略:

    bucket名称为 mycompany
    用户是 David
    每个用户的文件夹为 /home/name

    该策略首先允许列出存储桶,然后允许列出文件夹 /home /主页/名称 。最后,允许在文件夹内执行所有操作 /主页/名称

    {
     "Version":"2012-10-17",
     "Statement": [
       {
         "Sid": "AllowUserToSeeBucketListInTheConsole",
         "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::*"]
       },
      {
         "Sid": "AllowRootAndHomeListingOfCompanyBucket",
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::my-company"],
         "Condition":{"StringEquals":{"s3:prefix":["","home/", "home/David"],"s3:delimiter":["/"]}}
        },
       {
         "Sid": "AllowListingOfUserFolder",
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::my-company"],
         "Condition":{"StringLike":{"s3:prefix":["home/David/*"]}}
       },
       {
         "Sid": "AllowAllS3ActionsInUserFolder",
         "Effect": "Allow",
         "Action": ["s3:*"],
         "Resource": ["arn:aws:s3:::my-company/home/David/*"]
       }
     ]
    }
    

    你可以找到一个很好的分步解释,以及如何 here