防止跨服务混淆代理 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

防止跨服务混淆代理

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

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

以下几节提供 Amazon Systems Manager 功能的策略示例。

混合激活策略示例

对于在混合激活中使用的服务角色,aws:SourceArn 的值必须是 Amazon Web Services 账户 的 ARN。请务必指定您在其中创建混合激活的 ARN 中的 Amazon Web Services 区域。如果您不知道资源的完整 ARN,或正在指定多个资源,请针对 ARN 未知部分使用带有通配符 (*) 的 aws:SourceArn 全局上下文条件键。例如,arn:aws:ssm:*:region:123456789012:*

以下示例演示了如何通过为自动化使用 aws:SourceArnaws:SourceAccount 全局条件上下文键,以防止在美国东部(俄亥俄)区域(us-east-2)出现混淆代理问题。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":"ssm.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "aws:SourceAccount":"123456789012" }, "ArnEquals":{ "aws:SourceArn":"arn:aws:ssm:us-east-2:123456789012:*" } } } ] }

资源数据同步策略示例

利用 Systems Manager Inventory、Explorer 和 Compliance,您能够创建资源数据同步,将运营数据 (OpsData) 集中存储在 Amazon Simple Storage Service 中央存储桶中。如果希望使用 Amazon Key Management Service (Amazon KMS) 来加密资源数据同步,则必须创建包含以下策略的新键,或更新现有键并向其添加此策略。此策略中的 aws:SourceArnaws:SourceAccount 条件键可防止混淆代理问题。以下为策略示例。

{ "Version": "2012-10-17", "Id": "ssm-access-policy", "Statement": [ { "Sid": "ssm-access-policy-statement", "Action": [ "kms:GenerateDataKey" ], "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Resource": "arn:aws:kms:us-east-2:123456789012:key/KMS_key_id", "Condition": { "StringLike": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:ssm:*:123456789012:role/aws-service-role/ssm.amazonaws.com/AWSServiceRoleForAmazonSSM" } } } ] }
注意

策略示例中的 ARN 让系统能够加密来自除 Amazon Security Hub 之外所有来源的 OpsData。如果您需要加密 Security Hub 数据,例如使用 Explorer 收集 Security Hub 数据,则必须附加指定以下 ARN 的额外策略:

"aws:SourceArn": "arn:aws:ssm:*:account-id:role/aws-service-role/opsdatasync.ssm.amazonaws.com/AWSServiceRoleForSystemsManagerOpsDataSync"