如何配置AWS权限策略让Rekognition DetectFaces仅使用S3桶内图片?
正确配置Rekognition DetectFaces仅访问指定S3桶的权限策略
你的当前策略有个关键问题:Rekognition的Resource字段不能直接填S3对象的ARN,因为Rekognition的资源标识规则和S3不一样。要限制DetectFaces仅用指定S3桶里的图片,得通过条件判断来约束请求里引用的S3资源。
以下是修正后的权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRekognitionDetectFacesFromSpecificBucket", "Effect": "Allow", "Action": "rekognition:DetectFaces", "Resource": "*", "Condition": { "StringEquals": { "s3:bucket": "my-bucket", "s3:prefix": "" } } }, { "Sid": "AllowS3AccessToSpecificBucketObjects", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::my-bucket/*" } ] }
核心细节说明:
- Rekognition权限部分:
Resource设为*,因为DetectFaces操作不支持指定具体Rekognition资源ARN,只能通过Condition限制S3源。Condition里的StringEquals强制要求请求必须引用my-bucket这个桶;s3:prefix设为空表示允许桶内所有对象,要是想限制特定前缀,改成images/*这类路径就行。
- S3权限部分:
- 不用给
s3:*Object这么宽泛的权限,只需要GetObject(读取图片内容)就够了,避免权限过度开放。
- 不用给
验证方式:
用AWS SDK调用DetectFaces时,要是尝试用其他S3桶的图片,会直接收到权限拒绝错误;只有指定桶里的图片能正常调用。
内容的提问来源于stack exchange,提问作者Lee H
相关产品推荐
相关产品推荐

