Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
policy_sentry — 根据资源ARN和访问级别生成最低权限的AWS IAM策略,自动化云基础设施的安全策略创建。 | Kitploit
工具/GitHubGitHub/salesforce/policy_sentry
云基础设施安全配置审计云安全DevSecOps身份与访问管理 (IAM)
GitHubsalesforce/policy_sentry

policy_sentry

根据资源ARN和访问级别生成最低权限的AWS IAM策略,自动化云基础设施的安全策略创建。

查看仓库
2.2k157121个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Policy Sentry

IAM 最小权限策略生成器。

continuous-integration Documentation Status Join the chat at https://gitter.im/salesforce/policy_sentry Twitter PyPI Python Version Downloads

  • 教程
    • 安装
      • 包管理器
      • Shell 补全
    • 步骤 1:创建模板
    • 步骤 2:复制/粘贴 ARN
    • 步骤 3:write-policy 命令
  • 速查表
    • 策略编写速查表
    • IAM 数据库查询速查表
    • 本地初始化(可选)
  • 其他用法
    • 命令
    • Python 库用法
    • Docker
    • Terraform
  • 参考

文档

有关详细说明和完整文档,请访问 ReadTheDocs 上的项目。

查看 Salesforce 工程博客文章 了解 Policy Sentry。

概述

手动编写安全高效的 IAM 策略既繁琐又低效。许多基础设施即代码 (IaC) 开发者都有过这样的经历:

  • 你决心尽最大努力为用户和角色提供执行任务所需的最小权限,但你花了太多时间通读 AWS IAM 文档中关于 [AWS 服务的操作、资源和条件键][1] 的内容。
  • 你的团队领导鼓励你将安全性融入 IAM 策略以提高产品质量,但最终由于项目截止日期而感到沮丧。
  • 你的团队中没有专职安全人员来为你编写这些 IAM 策略,也没有任何自动化工具能自动感知你执行的 AWS API 调用,并为你编写带有资源 ARN 约束的策略。
  • 在幻想这种自动化水平之后,你意识到编写最小权限 IAM 策略(看似是出于善意)会危及你按时完成代码的能力。
  • 你使用托管策略(因为为什么不呢?)或者你粗略估算 API 调用的名称并使用通配符,以便继续生活。

这样的流程对于安全性和基础设施即代码开发者来说都不理想。我们需要让安全地编写 IAM 策略变得更容易,并抽象出编写最小权限 IAM 策略的复杂性。这就是我创建这个工具的原因。

Policy Sentry 允许用户在几秒钟内创建最小权限的 IAM 策略,而不是手动繁琐地编写 IAM 策略。这些策略根据访问级别和资源进行范围缩小。在发生入侵时,这有助于通过仅授予 IAM 主体所需访问权限来限制泄露凭据的爆炸半径。

在此之前,手工制作一个带有资源 ARN 约束的 IAM 策略可能需要数小时——但现在只需几秒钟。这样,开发者只需确定他们需要访问的资源,而 Policy Sentry 将 IAM 策略的复杂性从其开发流程中抽象出来。

基于资源约束和访问级别编写安全策略

Policy Sentry 的旗舰功能是能够根据资源 ARN 和访问级别创建 IAM 策略。我们的 CRUD 功能采用了一种固执己见的做法:IaC 开发者不应该需要理解 AWS IAM 的复杂性——我们应该为他们抽象出复杂性。事实上,开发者只需说出……

  • “我需要 arn:aws:s3:::example-org-sbx-vmimport 的 读取/写入/列表 访问权限”
  • “我需要 arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret 的 权限管理 访问权限”
  • “我需要 arn:aws:ssm:us-east-1:123456789012:parameter/test 的 标签管理 访问权限”

……然后我们的自动化工具就会创建对应这些访问级别的策略。

我们如何做到这一点?Policy Sentry 利用 AWS 关于[操作、资源和条件键][1] 的文档来查找操作、访问级别和资源类型,并根据 ARN 和访问级别生成策略。考虑下面的表格片段:

操作 访问级别 资源类型
ssm:GetParameter 读取 参数
ssm:DescribeParameters 列表 参数
ssm:PutParameter 写入 参数
secretsmanager:PutResourcePolicy 权限管理 密钥
secretsmanager:TagResource 标签管理 密钥

Policy Sentry 将所有文档聚合到一个数据库中,并使用该数据库根据操作、资源和访问级别生成策略。

教程

安装

包管理器

  • Homebrew
brew tap salesforce/policy_sentry https://github.com/salesforce/policy_sentry
brew install policy_sentry
  • Pip
pip3 install --user policy_sentry

Shell 补全

要启用 Bash 补全,请将以下内容放入你的 .bashrc:

eval "$(_POLICY_SENTRY_COMPLETE=bash_source policy_sentry)"

要启用 ZSH 补全,请将以下内容放入你的 .zshrc:

eval "$(_POLICY_SENTRY_COMPLETE=zsh_source policy_sentry)"

步骤 1:创建模板

  • 要根据资源和访问级别生成策略,请先使用此命令创建模板,以便你只需填写 ARN:
policy_sentry create-template --output-file crud.yml --template-type crud
  • 它将生成如下文件:
mode: crud
name: ''
# 指定资源 ARN
read:
- ''
write:
- ''
list:
- ''
tagging:
- ''
permissions-management:
- ''
# 不支持资源约束的操作
wildcard-only:
  single-actions: # 独立操作
  - ''
  # 服务级别 - 如 's3' 或 'ec2'
  service-read:
  - ''
  service-write:
  - ''
  service-list:
  - ''
  service-tagging:
  - ''
  service-permissions-management:
  - ''
# 在此列出需要跳过资源约束要求的操作。
skip-resource-constraints:
- ''
# 通过在此指定操作来从输出中排除它们。支持通配符,例如 kms:Delete*
exclude-actions:
- ''
# 如果此策略需要包含 AssumeRole 操作
sts:
  assume-role:
    - ''
  assume-role-with-saml:
    - ''
  assume-role-with-web-identity:
    - ''

步骤 2:复制/粘贴 ARN

  • 复制/粘贴你希望包含在策略中的 ARN。你可以删除不使用的行,或者直接保留它们。
mode: crud
read:
- 'arn:aws:ssm:us-east-1:123456789012:parameter/myparameter'
write:
- 'arn:aws:ssm:us-east-1:123456789012:parameter/myparameter'
list:
- 'arn:aws:ssm:us-east-1:123456789012:parameter/myparameter'
tagging:
- 'arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret'
permissions-management:
- 'arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret'

步骤 3:write-policy 命令

  • 然后运行此命令:
policy_sentry write-policy --input-file crud.yml
  • 它将生成以下结果:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SsmReadParameter",
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter",
                "ssm:GetParameterHistory",
                "ssm:GetParameters",
                "ssm:GetParametersByPath",
                "ssm:ListTagsForResource"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:123456789012:parameter/myparameter"
            ]
        },
        {
            "Sid": "SsmWriteParameter",
            "Effect": "Allow",
            "Action": [
                "ssm:DeleteParameter",
                "ssm:DeleteParameters",
                "ssm:LabelParameterVersion",
                "ssm:PutParameter"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:123456789012:parameter/myparameter"
            ]
        },
        {
            "Sid": "SecretsmanagerPermissionsmanagementSecret",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:DeleteResourcePolicy",
                "secretsmanager:PutResourcePolicy"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret"
            ]
        },
        {
            "Sid": "SecretsmanagerTaggingSecret",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:TagResource",
                "secretsmanager:UntagResource"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret"
            ]
        }
    ]
}

请注意,上面的策略识别了用户提供的 ARN,以及请求的访问级别。例如,SID SecretsmanagerTaggingSecret 仅包含分配给秘密资源类型的标签管理操作。

这极大地加快了开发 IAM 策略的速度,并确保所有创建的策略将访问权限限制为你的角色所需。这样,开发者只需确定他们需要访问的资源,我们将 IAM 策略的复杂性从他们的开发流程中抽象出来。

速查表

策略编写速查表

# 首先创建模板!!!这样你就可以直接粘贴所需值,而无需记住 YAML 格式
# CRUD 模式
policy_sentry create-template --output-file tmp.yml --template-type crud
# 操作模式
policy_sentry create-template --output-file tmp.yml --template-type actions
下载工具