防止跨服务混淆代理 - Amazon Rekognition

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

防止跨服务混淆代理

在 AWS 中,以下情况可能会发生跨服务模拟:一项服务(调用服务)调用另一项服务(被调用服务)。尽管调用服务不应具有适当的权限,但仍可操纵以对另一个客户的资源进行操作,这会导致代理混淆。

为了防止这种情况,AWS 提供可帮助您保护所有服务的服务委托人数据的工具,这些服务委托人有权限访问账户中的资源。

我们建议在资源策略中使用 aws:SourceArnaws:SourceAccount 全局条件上下文键,以限制 Amazon Rekognition 为其他服务提供的资源访问权限。

如果 aws:SourceArn 值不包含账户 ID,例如 Amazon S3 存储桶 ARN,您必须使用两个键来限制权限。如果同时使用键和包含账户 ID 的 aws:SourceArn 值,则 aws:SourceAccount 值和 aws:SourceArn 值中的账户在同一策略语句中使用时,必须使用相同的账户 ID。

如果您只希望将一个资源与跨服务访问相关联,请使用 aws:SourceArn。如果您想允许该账户中的任何资源与跨服务使用操作相关联,请使用 aws:SourceAccount

aws:SourceArn 的值必须是 Rekognition 使用的资源的 ARN,其指定格式如下:arn:aws:rekognition:region:account:resource

arn:User ARN 的值应为将调用视频分析操作的用户(担任角色的用户)的 ARN。

解决代理混淆问题的推荐方法,是将 aws:SourceArn 全局条件上下文键与完整资源 ARN 结合使用。

如果您不了解完整的资源 ARN,或者正在指定多个资源,请针对 ARN 未知部分使用带有通配符字符 (*) 的 aws:SourceArn 键。例如,arn:aws:rekognition:*:111122223333:*

为了防止出现代理混淆的问题,请执行以下步骤:

  1. 在 IAM 控制台的导航窗格中,选择角色选项。控制台将显示您当前账户的角色。

  2. 选择要修改的角色的名称。您修改的角色应具有 AmazonRekognitionServiceRole 权限策略。选择信任关系选项卡。

  3. 选择编辑信任策略

  4. 编辑信任策略页面上,将默认 JSON 策略替换为使用 aws:SourceArnaws:SourceAccount 全局条件上下文密钥中的一个或两个的策略。请参阅下面的示例策略。

  5. 选择更新策略

以下示例信任策略演示如何使用 Amazon Rekognition 中的 aws:SourceArnaws:SourceAccount 全局条件上下文键来防范混淆代理问题。

如果您正在处理存储视频和流视频,则可以在您的 IAM 角色中使用如下所示的策略:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"rekognition.amazonaws.com", "AWS":"arn:User ARN" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"Account ID" }, "StringLike":{ "aws:SourceArn":"arn:aws:rekognition:region:111122223333:streamprocessor/*" } } } ] }

如果您只处理存储视频,则可以在您的 IAM 角色中使用如下所示的策略(请注意,您不必包含指定 streamprocessorStringLike 参数):

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"rekognition.amazonaws.com", "AWS":"arn:User ARN" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"Account ID" } } } ] }