通过IAM策略限制Amazon SageMaker Studio特定实例类型失效排查
SageMaker Studio实例规格限制IAM策略不生效的排查原因
条件运算符使用错误
你这里用了ForAnyValue:StringLike,但sagemaker:InstanceTypes在CreateApp请求里是单个值,并非多值数组。ForAnyValue:是针对请求中多值参数的匹配场景,单值参数直接用StringLike即可,加前缀反而会导致匹配失效。实例类型匹配格式不符合实际规范
*.*.48xlarge的写法不匹配SageMaker实例类型的真实格式,比如实际实例类型是ml.p3.48xlarge、ml.g5.32xlarge,正确的匹配规则应该是ml.*.48xlarge或者*.48xlarge,前者更精准,能避免误匹配其他非SageMaker的标识。"system"和"default"属于无效匹配值
用户选择默认实例类型时,请求中传递的是具体实例类型(比如ml.t3.medium),而非"system"或"default"字符串。添加这两个值不仅起不到作用,还可能干扰策略逻辑,建议先删除。存在权限冲突风险
如果用户同时拥有其他允许sagemaker:CreateApp的策略(比如管理员权限策略),需确认你的拒绝策略条件是否真正触发。IAM中拒绝策略优先级更高,但如果其他策略允许所有CreateApp操作,且你的拒绝条件未匹配到请求参数,实例仍能被正常启动。
修正后的策略示例
{ "Action": [ "sagemaker:CreateApp" ], "Resource": [ "*" ], "Effect": "Deny", "Sid": "BlockSagemakerLargeInstances", "Condition": { "StringLike": { "sagemaker:InstanceTypes": [ "ml.*.48xlarge", "ml.*.32xlarge", "ml.*.24xlarge" ] } } }
验证步骤
- 用IAM Access Analyzer检查策略的语法和逻辑是否合规。
- 开启CloudTrail日志,查看
CreateApp请求中的InstanceTypes参数值,确认是否与策略匹配规则一致。 - 给测试账号仅附加修正后的策略,尝试启动目标规格实例,验证是否被拒绝。
内容的提问来源于stack exchange,提问作者Purple_haze
相关产品推荐
相关产品推荐

