AWS新工具自动识别并移除未使用权限

某云服务提供商推出IAM访问分析器新功能,通过自动化推理技术分析用户权限使用情况,智能推荐最小权限策略。该工具可识别未使用的Lambda和S3操作权限,并自动生成优化后的策略文件,帮助实现最小权限原则。

实践中的策略推荐

假设某个IAM角色附加了以下策略:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
  "Version": "2012-10-17",
  "Statement": [
   {
      "Effect": "Allow",
      "Action": [
        "lambda:AddPermission",
        "lambda:GetFunctionConfiguration",
        "lambda:UpdateFunctionConfiguration",
        "lambda:UpdateFunctionCode",
        "lambda:CreateFunction",
        "lambda:DeleteFunction",
        "lambda:ListVersionsByFunction",
        "lambda:GetFunction",
        "lambda:Invoke*"
      ],
      "Resource": "arn:aws:lambda:us-east-1:123456789012:function:my-lambda"
   },
  {
    "Effect" : "Allow",
    "Action" : [
      "s3:Get*",
      "s3:List*"
    ],
    "Resource" : "*"
  }
 ]
}

该策略包含两个声明:

  • 第一个声明允许对特定Lambda函数的操作权限,包括具体操作和通配符lambda:Invoke*
  • 第二个声明允许对所有S3存储桶的Get和List操作

未使用权限识别

启用访问分析器后,系统会生成未使用权限列表:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[
 {
    "serviceNamespace": "lambda",
    "actions": [
      "UpdateFunctionCode",
      "GetFunction",
      "ListVersionsByFunction",
      "UpdateFunctionConfiguration",
      "CreateFunction",
      "DeleteFunction",
      "GetFunctionConfiguration",
      "AddPermission"
    ]
  },
  {
    "serviceNamespace": "s3",
    "actions": [
        "GetBucketLocation",
        "GetBucketWebsite",
        "GetBucketPolicyStatus",
        "GetAccelerateConfiguration",
        "GetBucketPolicy",
        "GetBucketRequestPayment",
        "GetReplicationConfiguration",
        "GetBucketLogging",
        "GetBucketObjectLockConfiguration",
        "GetBucketNotification",
        "GetLifecycleConfiguration",
        "GetAnalyticsConfiguration",
        "GetBucketCORS",
        "GetInventoryConfiguration",
        "GetBucketPublicAccessBlock",
        "GetEncryptionConfiguration",
        "GetBucketAcl",
        "GetBucketVersioning",
        "GetBucketOwnershipControls",
        "GetBucketTagging",
        "GetIntelligentTieringConfiguration",
        "GetMetricsConfiguration"
    ]
  }
]

自动化策略优化

访问分析器自动生成优化后的策略:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
  "Version": "2012-10-17",
  "Statement" : [
   {
      "Effect" : "Allow",
      "Action" : [
        "lambda:Invoke*"
      ],
      "Resource" : "arn:aws:lambda:us-east-1:123456789012:function:my-lambda"
    },
    {
     "Effect" : "Allow",
     "Action" : [
      "s3:GetAccess*",
      "s3:GetAccountPublicAccessBlock",
      "s3:GetDataAccess",
      "s3:GetJobTagging",
      "s3:GetMulti*",
      "s3:GetObject*",
      "s3:GetStorage*",
       "s3:List*"
     ],
     "Resource" : "*"
   }
  ]
}

技术实现原理

策略推荐基于"最小通用泛化"数学原理,通过构建前缀树(trie)数据结构实现:

  1. 节点表示操作前缀
  2. 绿色节点表示安全前缀(不包含未使用操作)
  3. 橙色节点表示不安全前缀
  4. 选择最短的安全前缀来生成通配符操作

这种方法确保修改后的策略:

  • 仅允许原始策略中未被报告为未使用的权限
  • 保持策略结构的简洁性
  • 实现最小权限原则的自动化实施

该功能现已集成到访问分析器中,用户可通过控制台直接使用策略推荐功能。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计