Cross-service confused deputy protection

这个策略是一个用于防止混淆代理(Confused Deputy)攻击的安全策略。它的主要效果是:

1. 当 AWS 服务作为主体(Principal)访问资源时,该策略会拒绝访问,除非满足特定条件。

2. 策略适用的服务和操作包括:

• S3 的所有操作

• SQS 的所有操作

• KMS 的所有操作

• Secrets Manager 的所有操作

• STS 的所有操作

3. 拒绝条件(必须同时满足以下所有条件才会拒绝):

• 请求来自 AWS 服务(aws:PrincipalIsAWSService 为 true)

• 请求必须包含 aws:SourceArn(不能为空)

• 如果请求中包含 aws:SourceOrgID,则其值必须不等于 "my-org-id"

• 如果请求中包含 aws:SourceAccount,则其值必须不在 ["third-party-account-a", "third-party-account-b"] 列表中

这个策略的目的是确保只有来自特定组织 ID 或特定账户的 AWS 服务调用才能访问资源,并且要求请求必须包含源 ARN,从而防止混淆代理攻击。这是一种安全最佳实践,可以限制跨服务权限提升的风险。

{
    "Version": "2012-10-17",
    "Statement": [
        {            
            "Sid": "EnforceConfusedDeputyProtection",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:*",
                "sqs:*",
                "kms:*",
                "secretsmanager:*",
                "sts:*"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:SourceOrgID": "my-org-id",
                    "aws:SourceAccount": [
                        "third-party-account-a",
                        "third-party-account-b"
                    ]
                },  
                "Bool": {
                    "aws:PrincipalIsAWSService": "true"
                },
                 "Null": {
                    "aws:SourceArn": "false"
                }
            }
        }
    ]
}

最后更新于