Amazon Bedrock身份池访客调用模型遇403权限拒绝,认证用户正常
解决Identity Pool访客身份无法调用Amazon Bedrock的问题
AWS不存在禁止Identity Pool访客访问Bedrock的全局策略,问题大概率出在身份池未认证角色的会话策略或权限边界限制上,以下是具体排查和解决步骤:
检查身份池未认证角色的会话策略
身份池为未认证用户生成临时凭证时,可能会自动应用会话策略,进一步缩小角色权限范围。即使你给角色附加了Bedrock Full Access,会话策略也可能拦截bedrock:InvokeModel操作。
操作:进入Cognito身份池控制台,选中目标身份池,进入「未认证身份」的角色设置页面,确认是否存在额外的会话策略配置。模拟临时凭证的实际权限
用访客身份获取临时凭证后,执行以下命令验证实际权限(替换对应的资源ARN和临时凭证信息):aws bedrock invoke-model --model-id anthropic.claude-3-haiku-20240307-v1:0 --body '{"prompt":"Hello","max_tokens_to_sample":100}' --region us-east-1或者用IAM模拟命令精准验证:
aws iam simulate-principal-policy --policy-source-arn "临时凭证的ARN" --action-names "bedrock:InvokeModel" --resource-arns "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-haiku-20240307-v1:0"该结果会准确反映临时凭证的有效权限,比通用政策模拟器更可靠。
检查角色的权限边界
登录IAM控制台,找到身份池对应的未认证角色,查看「权限边界」标签页。如果设置了权限边界,即使角色附加了全量权限,也会被边界限制,需要确保边界策略包含bedrock:InvokeModel操作。验证角色的信任策略
确认未认证角色的信任策略允许Cognito身份池的未认证身份扮演该角色,信任策略应包含以下规则(替换你的身份池ID):{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "你的身份池ID" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }
内容的提问来源于stack exchange,提问作者Kamil Kuriata
相关产品推荐
相关产品推荐

