首页 > 解决方案 > AWS CFT 模板 IAM 策略

问题描述

我正在使用 CFT 创建一个 IAM 策略,该策略只允许单独访问一个 S3 存储桶(这也是在同一个 CFT 本身中创建的)。这是问题所在的 CFT 部分

    {
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "BucketCreation":{
            "Type": "AWS::S3::Bucket",
            "Properties": {
               "BucketName":"samplebucket",
              }
            },
        "IAMPolicy":{
          "Type": "AWS::IAM::Policy",
          "Properties": {
            "PolicyName": "ListS3BucketsPolicy",
            "PolicyDocument": {
                "Statement": [{
                    "Effect": "Allow",
                    "Action": [
                        "s3:*"
                    ],
                    "Resource": "Fn::GetAtt" : [ "BucketCreation" , "Arn" ]
                }]
             }
          }
       } 
    } 
  }

现在,上面的 cft 使用资源语句创建了一个 IAM 策略,"Resource": "arn:aws:s3:::bucketname"它只提供存储桶访问权限,而不提供对象级别访问权限。我需要的是资源部分看起来像这样"Resource": "arn:aws:s3:::bucketname/*"。这在 CFT 中可能吗?

标签: amazon-web-servicesamazon-s3amazon-cloudformation

解决方案


是的,你可以,看这里

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

此 ARN 使用 ARN 的相对 ID 部分中的通配符 * 来标识示例存储桶中的所有对象。

更新: 要连接/*查看像Join这样的内在函数


推荐阅读