有没有一种方法可以通过编程列出AWS服务的所有可用操作



我正在寻找一种方法来列出AWS IAM策略中可以使用的所有操作。

这是一个使用IAM操作的示例策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1457442845000",
            "Effect": "Allow",
            "Action": [
                "iam:CreatePolicy",
                "iam:CreatePolicyVersion",
                "iam:GetGroupPolicy",
                "iam:CreateGroup",
                "iam:GetPolicy",
                "iam:GetPolicyVersion",
                "iam:GetRolePolicy",
                "iam:ListAttachedGroupPolicies"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

我想从文件中搜索操作,为此我想拥有所有可用的操作。我还找不到办法拿到那张单子。欢迎任何指示。

Amazon提供了一个策略生成器,它自己知道当前时间点上所有可能的API和操作。

可以从AWS策略生成器policies.js:生成操作列表

curl --header 'Connection: keep-alive' 
     --header 'Pragma: no-cache' 
     --header 'Cache-Control: no-cache' 
     --header 'Accept: */*' 
     --header 'Referer: https://awspolicygen.s3.amazonaws.com/policygen.html' 
     --header 'Accept-Language: en-US,en;q=0.9' 
     --silent 
     --compressed 
     'https://awspolicygen.s3.amazonaws.com/js/policies.js' |
    cut -d= -f2 |
    jq -r '.serviceMap[] | .StringPrefix as $prefix | .Actions[] | "($prefix):(.)"' |
    sort |
    uniq

我喜欢Trentium的答案,但它需要维护。

我想我将使用AWS策略生成器调用Policy.js文件

每个服务的可用操作都在这些服务的文档中,例如IAM操作列表在IAM文档中,EC2操作列表在EC2文档中。

遇到了同样的问题,只是在寻找与AWS Service IAM相关的操作。解决者:

  • 为Javascript提取AWS SDK(请参阅https://sdk.amazonaws.com/builder/js/)
  • 将生成的缩小后的javascript文件(aws-sdk-2.680.0.min.js)作为小型自定义HTML文档的一部分加载
  • 编写一个javascript函数,该函数接受所需的服务,并在对象AWS.apiLoader.services[ 'iam' ][ Version ].operations中循环,提取Actions列表。(请注意,"版本"的格式为yyyy-mm-dd,在缩小的javascript文件中,每个AWS服务只有一个条目。)
  • 正在导出结果

希望有人觉得这很有帮助,因为这是我能够通过编程获得与AWS服务相关的操作的全面列表的唯一方法。。。

IAM参考文档中提供了每个服务可用的所有操作列表:

https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actions-resources-contextkeys.html

定义了行动、资源和适用条件。

如果您的机器上安装了节点,只需在终端中键入npx get-aws-actions即可。无需安装任何东西。此npx命令从AWS策略生成器文件https://awspolicygen.s3.amazonaws.com/js/policies.js中获取操作,并支持文本搜索以精确定位特定AWS服务的操作(例如,搜索s3:以列出所有S3操作)。

我很恼火没有简单的方法可以做到这一点,所以我构建了一个python实用工具,它从https://awspolicygen.s3.amazonaws.com/js/policies.js获取数据并将其翻译成python词典。它还处理本地文件的缓存,这样在运行一次命令后运行该命令就不会花费太长时间。

获取列表的简单方法:

pip install pyiamvortex
pyiamvortex get-aws-actions

参考:

  • https://pypi.org/project/pyiamvortex/
  • https://github.com/nbajoel/pyiamvortex

Fluggo的服务授权参考scraper是官方服务授权参考文档的机器可读版本。

GitHub回购历史记录显示了策略更改的审计跟踪。

下面是一个如何使用它的例子

保存身份验证引用。

curl 
--silent 
--show-error 
--url 'https://raw.githubusercontent.com/fluggo/aws-service-auth-reference/master/service-auth.json' 
> /tmp/auth.json 

搜索以"结尾的IAM动作;角色";。

cat /tmp/auth.json 
| jq --raw-output '
  .[]
  | {service: .servicePrefix} + (.actions[] | {action: .name})
  | select(.service == "iam" and (.action | match("Role$")))
  | "(.service):(.action)"
'

输出:

iam:CreateRole
iam:CreateServiceLinkedRole
iam:DeleteRole
iam:DeleteServiceLinkedRole
iam:GetRole
iam:ListInstanceProfilesForRole
iam:PassRole
iam:TagRole
iam:UntagRole
iam:UpdateRole

我发现,允许iam:*Role并不是允许正常角色执行所有生命周期操作的好方法,因为它允许CreateServiceLinkedRolePassRole之类的操作。

相关内容

  • 没有找到相关文章