防止跨服务混淆代理 - AWS SimSpace Weaver

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

防止跨服务混淆代理

混淆代理问题是一个安全问题,即没有执行操作权限的实体可能会诱使更具权限的实体执行该操作。在 AWS 中,跨服务模拟可能会导致混淆代理问题。一个服务(呼叫服务) 调用另一项服务(所谓的服务)时,可能会发生跨服务模拟。可以操纵调用服务以使用其权限对另一个客户的资源进行操作,否则该服务不应有访问权限。为防止这种情况,AWS 提供可帮助您保护所有服务的数据的工具,而这些服务中的服务主体有权限访问账户中的资源。

我们建议在资源策略中使用 aws:SourceArnaws:SourceAccount 全局条件上下文键,以限制 AWS SimSpace Weaver 为其他服务提供的资源访问权限。如果 aws:SourceArn 值不包含账户 ID,例如 Amazon S3 桶 Amazon 资源名称(ARN),您必须使用两个全局条件上下文键来限制权限。如果同时使用全局条件上下文密钥和包含账户 ID 的 aws:SourceArn 值,则 aws:SourceAccount 值和 aws:SourceArn 值中的账户在同一策略语句中使用时,必须使用相同的账户 ID。如果您只希望将一个资源与跨服务访问相关联,请使用 aws:SourceArn。如果您想允许该账户中的任何资源与跨服务使用操作相关联,请使用 aws:SourceAccount

aws:SourceArn 的值必须使用扩展的 ARN。

防范混淆代理问题最有效的方法是使用 aws:SourceArn 全局条件上下文键和资源的完整 ARN。如果不知道扩展的完整 ARN,或者正在指定多个扩展,请针对 ARN 未知部分使用带有通配符(*)的 aws:SourceArn 全局上下文条件键。例如,arn:aws:simspaceweaver:*:111122223333:*

以下示例演示如何使用 SimSpace Weaver 中的 aws:SourceArnaws:SourceAccount 全局条件上下文键来防范混淆代理问题。只有当请求来自指定源账户并提供指定的 ARN 时,此策略才允许 SimSpace Weaver 代入该角色。在这种情况下,SimSpace Weaver 只能在请求者自己的账户 (111122223333) 中为来自模拟的请求代入角色,并且只能在指定的区域 (us-west-2) 中代入角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "simspaceweaver.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:simspaceweaver:us-west-2:111122223333:simulation/*" } } } ] }

编写此策略的一种更安全的方法是,将模拟名称包含在 aws:SourceArn 中,如以下示例所示,这会将策略限制为名为 MyProjectSimulation_22-10-04_22_10_15 的模拟:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "simspaceweaver.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:simspaceweaver:us-west-2:111122223333:simulation/MyProjectSimulation_22-10-04_22_10_15" } } } ] }

如果您的 aws:SourceArn 明确包含账号,则可以省略 aws:SourceAccountCondition 元素测试(有关更多信息,请参阅《IAM 用户指南》),例如,在以下简化政策中:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "simspaceweaver.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:simspaceweaver:us-west-2:111122223333:simulation/MyProjectSimulation_22-10-04_22_10_15" } } } ] }