Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS IAM-可以在一个值中使用多个通配符(*)_Amazon Web Services_Amazon S3_Amazon Iam - Fatal编程技术网

Amazon web services AWS IAM-可以在一个值中使用多个通配符(*)

Amazon web services AWS IAM-可以在一个值中使用多个通配符(*),amazon-web-services,amazon-s3,amazon-iam,Amazon Web Services,Amazon S3,Amazon Iam,在所有IAM策略示例中,他们都提到使用通配符(*)作为“stuff”的占位符。但是,示例始终在末尾使用它们,和/或仅使用一个通配符进行演示(例如,使用../xyz/*列出文件夹“xyz”中的所有内容) 我找不到任何关于使用多个通配符的明确信息,例如,在多个存储桶中匹配子文件夹中的任何内容: arn:aws:s3:::mynamespace属性*/logs/* 允许某些内容在“生产”(mynamespace属性prod)和“沙盒”(mynamespace属性sand)存储桶中查看任何log文件。不

在所有IAM策略示例中,他们都提到使用通配符(
*
)作为“stuff”的占位符。但是,示例始终在末尾使用它们,和/或仅使用一个通配符进行演示(例如,使用
../xyz/*
列出文件夹“xyz”中的所有内容)

我找不到任何关于使用多个通配符的明确信息,例如,在多个存储桶中匹配子文件夹中的任何内容:

arn:aws:s3:::mynamespace属性*/logs/*

允许某些内容在“生产”(
mynamespace属性prod
)和“沙盒”(
mynamespace属性sand
)存储桶中查看任何
log
文件。

不确定,但“突然”(你知道我在说什么)它正在使用:

  • 策略1:“允许对任何bucket拥有特定的S3权限”(例如编辑角色)
  • 策略2:“拒绝所有S3操作,除非在用户文件夹中跨存储桶”(即只能查看其文件)
其中“政策2”是:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ExplicitlyDenyAnythingExceptOwnNamedFolder",
            "Action": [
                "s3:*"
            ],
            "Effect": "Deny",
            "NotResource": [
                "arn:aws:s3:::mynamespace-property*/subfolder/${aws:username}/*"
            ]
        }
    ]
}

作为旁注,请注意
arn:aws:s3:::mynamespace属性*/${aws:username}/*
(无显式子文件夹)将与有无“中间”子文件夹匹配:

  • arn:aws:s3:::mynamespace属性后缀/子文件夹/theuser/files…”
  • arn:aws:s3:::mynamespace属性后缀/theuser/files…”

  • 是的,它会工作的

    从:

    您可以将通配符用作资源ARN的一部分。你可以用 任何ARN段(零件)内的通配符(*和?) 用冒号分隔)。星号(*)表示以下各项的任意组合: 字符和问号(?)表示任何单个字符。 您可以使用多个*或?每个段中的字符,但 通配符不能跨段


    我要说的是,“您可以使用多个”是文档中的一个输入错误,它们的意思是“您可以使用”。

    我可以确认
    arn:aws:cloudformation::123456789012:stack/Foo/*
    形式的IAM策略资源有效。这包含多个通配符,其中一个不在ARN的末尾。有趣的是,文档指定了
    …通配符不能跨段。
    -通用
    资源:“*”
    (据我所知,它是有效的)与此语句不一致吗?@WXMan您提出了一个好的观点。就我个人而言,我将
    资源:“*”
    解释为指定ARN的替代方案,因此ARN通配符文档不适用。奇怪的是,策略模拟器似乎不同意该文档。通配符是跨段的(它们实际上就像
    *
    regex)。如果忽略了这一点,可能会导致严重的安全问题。我认为我们都误读了文档,因为它指出ARN段是“由冒号分隔的部分”(如:通配符不跨越列表中的多个ARN定义),而不是斜杠。所以没有理由
    *
    不匹配任何资源。