某些 AWS 服务不支持在ARN中的特定字段使用通配符,这可能会在编写 IAM 策略时导致冲突。
例如,Amazon S3允许在IAM策略中使用通配符来授予对特定桶或对象集的访问权限。 但是,Amazon SQS不允许对队列URL或ARN的特定部分使用通配符。
要解决此问题,您可以使用IAM策略的条件元素来匹配ARN中的特定字段。 条件元素允许根据条件将策略限制为特定的AWS资源。
以下是一个示例IAM策略,它授予Amazon S3存储桶的只读访问权限。 此策略使用通配符来匹配S3桶的名称。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "arn:aws:s3:::example-bucket/*"
}
]
}
请注意,ARN中只有桶名称部分可以使用通配符。 对于其他 AWS 服务,请查阅官方文档以确定哪些ARN字段支持通配符。