如何通过EC2角色和EC2实例标记允许访问S3?

0

【以下的问题经过翻译处理】 我正在尝试创建一个策略,控制允许带有Name标签的EC2实例能够访问S3存储桶和带前缀的对象。我认为应该可以创建类似下面的策略实现以上要求,但是不起作用。当我尝试创建对象时,会被提示“PutObject操作:拒绝访问”。

我的EC2实例有一个非空的Name标签。如果将资源项中的${aws:RequestTag/Name}部分去掉,则EC2实例可以添加文件,但使用该变量,则操作失败。我试图将s3对象前缀限制为包括EC2实例标签名称的值。 我尝试使用的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::my-backups-sn/${aws:RequestTag/Name}/*"
        }
    ]
}

我在AWS控制面板中,为实例定义了Name=inst_name的标签,并执行了以下操作,

aws s3 cp my_file s3://my-backups-sn/inst_name/my_file.txt

非常感谢您的指导。

1 Antwort
0

【以下的回答经过翻译处理】 “aws:RequestTag/${TagKey}” IAM策略变量是在创建资源标签时使用的。例如,如果您想指定允许资源进行标记的键/值对,可以在IAM策略中使用“aws:RequestTag/${TagKey}”变量来允许/拒绝特定标记。例如,以下策略可以让您在EC2实例上应用“environment/prepod”标记:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "ec2:CreateTags",
    "Resource": "arn:aws:ec2:::instance/*",
    "Condition": {
      "StringEquals": {
        "aws:RequestTag/environment": [
          "production"
        ]
      }
    }
  }
}

“aws:RequestTag/${TagKey}”变量不会将附加到AWS资源的标记发送到S3。有关此策略变量的更多信息,请参阅以下链接: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag

但是,您可以使用“${aws:PrincipalTag/Name}”变量将附加到IAM角色的标记发送到S3。例如,如果您有一个使用EC2实例角色的EC2实例,则可以使用适当的标记对EC2实例角色进行标记。然后,将以下策略附加到IAM角色:

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/${aws:PrincipalTag/Name}/"
  }
}


有关“${aws:PrincipalTag/Name}”变量的更多信息,请参阅以下链接: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag

profile picture
EXPERTE
beantwortet vor 7 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen