我正在尝试为基本角色创建新的 AWS IAM 策略。 如果资源缺少标签,我想拒绝删除资源
ResourceDelete = True
到目前为止我所拥有的:
{
"Sid" : "AllowList",
"Effect" : "Allow",
"Action" : [
"acm:*",
"autoscaling:*",
"cloudtrail:*",
"cloudwatch:*",
"DMS:*",
"ec2:*",
"eks:*",
"elasticache:*",
"elasticloadbalancing:*",
"IAM:*",
"kms:*",
"lambda:*",
"rds:*",
"redshift:*",
"route53:*",
"s3:*",
"sns:*",
"sqs:*"
],
"Resource" : "*"
},
{
"Sid" : "DenyDelete",
"Effect" : "Deny",
"Action" : [
"acm:Delete*",
"acm:Request*",
"autoscaling:Delete*",
"cloudtrail:Delete*",
"cloudwatch:Delete*",
"DMS:Delete*",
"ec2:Delete*",
"ec2:Terminate*",
"eks:DeleteCluster",
"elasticache:Delete*",
"elasticloadbalancing:Delete*",
"kms:Delete*",
"lambda:Delete*",
"rds:Delete*",
"redshift:Delete*",
"route53:Delete*",
"s3:DeleteBucket*",
"sns:Delete*",
"sqs:Delete*"
],
"Resource" : "*",
"Condition" : {
"StringEquals" : { "aws:ResourceTag/ResourceDelete" : "True" }
}
我认为我对病情的理解有误。 根据上面的策略,我可以删除任何资源,即使它具有标签
ResourceDelete" : "True"
或不带有标签。
您当前的政策是
If ResourceDelete = true, then Deny the Delete
。您可能想使用 StringNotEquals
来解决这个问题。
但是,我认为不可能做你想做的事。
如果您查看特定服务的操作和条件页面,您可以查看特定操作是否接受标签。
例如,AWS Lambda 页面AWS Lambda 的操作、资源和条件键 - 服务授权参考表示,
DeleteFunction
操作不接受标签作为条件。
同样,对于 Route 53 Amazon Route 53 的操作、资源和条件键 - 服务授权参考 不会显示删除命令的任何条件标签。
因此,不幸的是,你的宏伟计划是不可能的。