Amazon web services 如何将S3 bucket name后缀与usename前缀匹配

Amazon web services 如何将S3 bucket name后缀与usename前缀匹配,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我想在AWS IAM服务中设置一个策略,允许遵循特定模式的用户连接到名称遵循特定模式的S3存储桶 我的用户看起来像archiver\u clientname,我的bucket看起来像clientname\u archive。到目前为止,我通读了一遍又一遍 ${s3:prefix}和${aws:username:suffix}是我编造的一些变量,${s3:prefix}实际上存在,但我不确定这是否符合我的预期。如果能够在不重命名的情况下将我的bucket名称与我的用户名进行匹配,那就太好了,因为否

我想在AWS IAM服务中设置一个策略,允许遵循特定模式的用户连接到名称遵循特定模式的S3存储桶

我的用户看起来像
archiver\u clientname
,我的bucket看起来像
clientname\u archive
。到目前为止,我通读了一遍又一遍

${s3:prefix}
${aws:username:suffix}
是我编造的一些变量,
${s3:prefix}
实际上存在,但我不确定这是否符合我的预期。如果能够在不重命名的情况下将我的bucket名称与我的用户名进行匹配,那就太好了,因为否则名称将不会说话,而只是客户名称,尽管我还有其他具有不同用途的bucket。可以交换用户前缀和后缀,也可以使用不同的分隔符。看起来这个策略工具有足够的灵活性来解决我的任务,我就是找不到合适的文档

我也不想为每个用户设置新策略


我会很高兴地回答我的方法是错误的,我会很好地解释为什么我的方法是错误的,以及我可以做些什么。首先,当用户获得bucket列表时,不可能限制返回给用户的列表。因此,不要对“s3:ListAllMyBucket”操作设置条件。他们要么看到所有的桶,要么什么也看不到

接下来,您不能“拆分”用户名。IAM策略语言没有那么复杂。如果您的用户名是“archiver\u username”,那么您应该能够使用资源中的`${aws:username}变量将其与bucket“archiver\u username\u archive”匹配:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::${aws:username}_archive"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::${aws:username}_archive/*"
    }
  ]
}

但是该语言不允许您匹配名为“username\u archive”的bucket。

首先,当用户获得bucket列表时,无法限制返回给用户的列表。因此,不要对“s3:ListAllMyBucket”操作设置条件。他们要么看到所有的桶,要么什么也看不到

接下来,您不能“拆分”用户名。IAM策略语言没有那么复杂。如果您的用户名是“archiver\u username”,那么您应该能够使用资源中的`${aws:username}变量将其与bucket“archiver\u username\u archive”匹配:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::${aws:username}_archive"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::${aws:username}_archive/*"
    }
  ]
}

但是该语言不允许您匹配名为“username\u archive”的bucket。

太棒了,我必须重新考虑用户命名,但这对我有效。太棒了,我必须重新考虑用户命名,但这对我有效。