【问题标题】:AWS CFT template IAM PolicyAWS CFT 模板 IAM 策略
【发布时间】:2018-09-20 21:10:22
【问题描述】:

我正在使用 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 使用资源语句 "Resource": "arn:aws:s3:::bucketname" 创建了一个 IAM 策略,这仅提供存储桶访问权限,而不提供对象级别访问权限。我需要的是资源部分看起来像这样"Resource": "arn:aws:s3:::bucketname/*"。这在 CFT 中可能吗?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudformation


    【解决方案1】:

    是的,您可以,请参阅here

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

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

    更新: 要连接/*,请查看intrinsic functions,例如Join

    【讨论】:

    • 好的,我认为您没有正确理解我的问题。我问我们如何通过 CFT 做到这一点?您提供的链接说明了“*”在 IAM 策略中的作用。那不是我的问题。我的问题很简单在 CFT 中 "Resource": "Fn::GetAtt" : [ "BucketCreation" , "Arn" ] 这一行将获得存储桶的 arn 即 arn:aws:s3:::bucketname 但我想要 arn:aws:s3:::bucketname/* 如何通过 CFT 获得它?比如说我们应该像这样"Resource": "Fn::GetAtt" : [ "BucketCreation" , "Arn" ]/*还是其他方式? [附:我在这里使用的方法是例如目的,它不会起作用]
    • 更新答案。
    【解决方案2】:

    感谢@titogeo。我找到了解决办法。在这里

        {
         "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::Join":["",[
                                           {
                                             "Fn::GetAtt" : [ "BucketCreation" , "Arn" ]
                                            },
                                           "/*"
                                          ]
                                      ]
                                 }
                            }]
                         }
                     }
                 } 
             }
    
         }
    

    P.S:对不起,可怜的缩进。我对此感到沮丧,如果有人可以解决它,那将很有帮助。

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 2023-02-04
      • 2019-04-18
      • 2021-09-29
      • 2018-05-08
      相关资源
      最近更新 更多