Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
policy_sentry — Erstellt AWS-IAM-Richtlinien mit minimalen Berechtigungen basierend auf Ressourcen-ARNs und Zugriffsebenen und automatisiert so die sichere Richtlinienerstellung für die Cloud-Infrastruktur. | Kitploit
Tools/GitHubGitHub/salesforce/policy_sentry
Cloud-Infrastruktur-SicherheitKonfigurationsprüfungCloud-SicherheitDevSecOpsIdentitäts- & Zugriffsmanagement (IAM)
GitHubsalesforce/policy_sentry

policy_sentry

Erstellt AWS-IAM-Richtlinien mit minimalen Berechtigungen basierend auf Ressourcen-ARNs und Zugriffsebenen und automatisiert so die sichere Richtlinienerstellung für die Cloud-Infrastruktur.

Repository anzeigen
2.2k157vor 5 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

Policy Sentry

IAM Least Privilege Policy Generator.

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

  • Tutorial
    • Installation
      • Paketmanager
      • Shell-Vervollständigung
    • Schritt 1: Vorlage erstellen
    • Schritt 2: ARNs kopieren/einfügen
    • Schritt 3: Write-Policy-Befehl
  • Cheat Sheets
    • Cheat Sheet zum Schreiben von Policys
    • Cheat Sheet für IAM-Datenbankabfragen
    • Lokale Initialisierung (optional)
  • Weitere Verwendung
    • Befehle
    • Python-Bibliotheksnutzung
    • Docker
    • Terraform
  • Referenzen

Dokumentation

Für ausführliche Anleitungen und vollständige Dokumentation besuchen Sie bitte das Projekt auf ReadTheDocs.

Lesen Sie den Salesforce Engineering Blog Post über Policy Sentry.

Übersicht

Das manuelle Erstellen sicherheitsbewusster IAM-Richtlinien kann sehr mühsam und ineffizient sein. Viele Infrastructure-as-Code-Entwickler haben so etwas schon erlebt:

  • Sie sind entschlossen, Ihr Bestes zu geben, um Benutzern und Rollen die geringstmöglichen Berechtigungen zu gewähren, die sie für ihre Aufgaben benötigen, und verbringen viel zu viel Zeit damit, die AWS-IAM-Dokumentation zu Aktionen, Ressourcen und Bedingungsschlüsseln für AWS-Services zu durchforsten.
  • Ihr Teamleiter ermutigt Sie, Sicherheit in Ihre IAM-Richtlinien für die Produktqualität einzubauen, aber schließlich werden Sie aufgrund von Projektterminen frustriert.
  • Sie haben keinen eingebetteten Sicherheitsexperten in Ihrem Team, der diese IAM-Richtlinien für Sie schreiben kann, und es gibt kein automatisiertes Tool, das automatisch die von Ihnen durchgeführten AWS-API-Aufrufe erkennt und sie dann mit Ressourcen-ARN-Einschränkungen für Sie schreibt.
  • Nachdem Sie über dieses Maß an Automatisierung fantasiert haben, wird Ihnen klar, dass das Schreiben von Least-Privilege-IAM-Richtlinien, scheinbar aus Nächstenliebe, Ihre Fähigkeit gefährdet, Ihren Code rechtzeitig fertigzustellen, um Projekttermine einzuhalten.
  • Sie verwenden verwaltete Richtlinien (denn warum nicht) oder Sie schätzen die Namen der API-Aufrufe ab und verwenden stattdessen Platzhalter, damit Sie Ihr Leben fortsetzen können.

Ein solcher Prozess ist weder für die Sicherheit noch für Infrastructure-as-Code-Entwickler ideal. Wir müssen das sichere Schreiben von IAM-Richtlinien erleichtern und die Komplexität der Erstellung von Least-Privilege-IAM-Richtlinien abstrahieren. Deshalb habe ich dieses Tool entwickelt.

Policy Sentry ermöglicht es Benutzern, in Sekundenschnelle Least-Privilege-IAM-Richtlinien zu erstellen, anstatt IAM-Richtlinien mühsam von Hand zu schreiben. Diese Richtlinien werden je nach Zugriffsebenen und Ressourcen eingeschränkt. Im Falle eines Sicherheitsvorfalls trägt dies dazu bei, den Explosionsradius kompromittierter Anmeldeinformationen zu begrenzen, indem IAM-Prinzipalen nur der Zugriff auf das gewährt wird, was sie benötigen.

Vor diesem Tool konnte es Stunden dauern, eine IAM-Richtlinie mit Ressourcen-ARN-Einschränkungen zu erstellen – aber jetzt kann es Sekunden dauern. Auf diese Weise müssen Entwickler nur die Ressourcen bestimmen, auf die sie zugreifen müssen, und Policy Sentry abstrahiert die Komplexität von IAM-Richtlinien von ihren Entwicklungsprozessen.

Sichere Richtlinien basierend auf Ressourceneinschränkungen und Zugriffsebenen schreiben

Das Flaggschiff-Feature von Policy Sentry ist die Möglichkeit, IAM-Richtlinien basierend auf Ressourcen-ARNs und Zugriffsebenen zu erstellen. Unsere CRUD-Funktionalität verfolgt den meinungsstarken Ansatz, dass IAC-Entwickler die Komplexität von AWS IAM nicht verstehen müssen – wir sollten die Komplexität für sie abstrahieren. Tatsächlich sollten Entwickler nur in der Lage sein, zu sagen...

  • "Ich benötige Lese-/Schreib-/Listen-Zugriff auf arn:aws:s3:::example-org-sbx-vmimport"
  • "Ich benötige Berechtigungsverwaltungs-Zugriff auf arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret"
  • "Ich benötige Tagging-Zugriff auf arn:aws:ssm:us-east-1:123456789012:parameter/test"

...und unsere Automatisierung sollte Richtlinien erstellen, die diesen Zugriffsebenen entsprechen.

Wie erreichen wir das? Nun, Policy Sentry nutzt die AWS-Dokumentation zu Aktionen, Ressourcen und Bedingungsschlüsseln, um die Aktionen, Zugriffsebenen und Ressourcentypen nachzuschlagen und Richtlinien basierend auf den ARNs und Zugriffsebenen zu generieren. Betrachten Sie die folgende Tabellenübersicht:

Policy Sentry fasst die gesamte Dokumentation in einer einzigen Datenbank zusammen und verwendet diese Datenbank, um Richtlinien entsprechend Aktionen, Ressourcen und Zugriffsebenen zu generieren.

Tutorial

Installation

Paketmanager

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

Shell-Vervollständigung

Um die Bash-Vervollständigung zu aktivieren, fügen Sie dies in Ihre .bashrc ein:

root@kitploit:~
eval "$(_POLICY_SENTRY_COMPLETE=bash_source policy_sentry)"

Um die ZSH-Vervollständigung zu aktivieren, fügen Sie dies in Ihre .zshrc ein:

root@kitploit:~
eval "$(_POLICY_SENTRY_COMPLETE=zsh_source policy_sentry)"

Schritt 1: Vorlage erstellen

  • Um eine Richtlinie basierend auf Ressourcen und Zugriffsebenen zu generieren, erstellen Sie zunächst eine Vorlage mit diesem Befehl, damit Sie nur die ARNs ausfüllen müssen:
root@kitploit:~
policy_sentry create-template --output-file crud.yml --template-type crud
  • Es wird eine Datei wie diese generiert:
root@kitploit:~
mode: crud
name: ''
# Specify resource ARNs
read:
- ''
write:
- ''
list:
- ''
tagging:
- ''
permissions-management:
- ''
# Actions that do not support resource constraints
wildcard-only:
  single-actions: # standalone actions
  - ''
  # Service-wide - like 's3' or 'ec2'
  service-read:
  - ''
  service-write:
  - ''
  service-list:
  - ''
  service-tagging:
  - ''
  service-permissions-management:
  - ''
# Skip resource constraint requirements by listing actions here.
skip-resource-constraints:
- ''
# Exclude actions from the output by specifying them here. Accepts wildcards, like kms:Delete*
exclude-actions:
- ''
# If this policy needs to include an AssumeRole action
sts:
  assume-role:
    - ''
  assume-role-with-saml:
    - ''
  assume-role-with-web-identity:
    - ''

Schritt 2: ARNs kopieren/einfügen

  • Kopieren Sie die ARNs, die Sie in Ihre Richtlinie aufnehmen möchten. Sie können Zeilen löschen, die Sie nicht verwenden, oder sie einfach dort lassen.
root@kitploit:~
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'

Schritt 3: Write-Policy-Befehl

  • Führen Sie dann diesen Befehl aus:
root@kitploit:~
policy_sentry write-policy --input-file crud.yml
  • Es wird diese Ergebnisse generieren:
root@kitploit:~
{
    "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"
            ]
        }
    ]
}

Beachten Sie, wie die obige Richtlinie die vom Benutzer bereitgestellten ARNs zusammen mit der angeforderten Zugriffsebene erkennt. Beispielsweise enthält die SID SecretsmanagerTaggingSecret nur Tagging-Aktionen, die dem Ressourcentyp secret zugeordnet sind.

Dies beschleunigt die Zeit für die Entwicklung von IAM-Richtlinien erheblich und stellt sicher, dass alle erstellten Richtlinien den Zugriff genau auf das beschränken, was Ihre Rolle benötigt. Auf diese Weise müssen Entwickler nur die Ressourcen bestimmen, auf die sie zugreifen müssen, und wir abstrahieren die Komplexität von IAM-Richtlinien von ihren Entwicklungsprozessen.

Cheat Sheets

Cheat Sheet zum Schreiben von Policys

root@kitploit:~
# Create templates first!!! This way you can just paste the values you need rather than remembering the YAML format
# CRUD mode
policy_sentry create-template --output-file tmp.yml --template-type crud
# Actions mode
policy_sentry create-template --output-file tmp.yml --template-type actions

# Write policy based on resource-specific access levels
policy_sentry write-policy --input-file examples/yml/crud.yml

# Write policy based on a list of actions
policy_sentry write-policy --input-file examples/yml/actions.yml

Cheat Sheet für IAM-Datenbankabfragen

root@kitploit:~

###############
# Actions Table
###############
# NOTE: Use --fmt yaml or --fmt json to change the output format. Defaults to json for querying

# Get a list of actions that do not support resource constraints
policy_sentry query action-table --service s3 --resource-type "*" --fmt yaml

# Get a list of actions at the "Write" level in S3 that do not support resource constraints
policy_sentry query action-table --service s3 --access-level write --resource-type "*" --fmt yaml

# Get a list of all IAM actions across ALL services that have "Permissions management" access
policy_sentry query action-table --service all --access-level permissions-management

# Get a list of all IAM Actions available to the RAM service
policy_sentry query action-table --service ram

# Get details about the `ram:TagResource` IAM Action
policy_sentry query action-table --service ram --name tagresource

# Get a list of all IAM actions under the RAM service that have the Permissions management access level.
policy_sentry query action-table --service ram --access-level permissions-management

# Get a list of all IAM actions under the SES service that support the `ses:FeedbackAddress` condition key.
policy_sentry query action-table --service ses --condition ses:FeedbackAddress

###########
# ARN Table
###########

# Get a list of all RAW ARN formats available through the SSM service.
policy_sentry query arn-table --service ssm

# Get the raw ARN format for the `cloud9` ARN with the short name `environment`
policy_sentry query arn-table --service cloud9 --name environment

# Get key/value pairs of all RAW ARN formats plus their short names
policy_sentry query arn-table --service cloud9 --list-arn-types

######################
# Condition Keys Table
######################

# Get a list of all condition keys available to the Cloud9 service
policy_sentry query condition-table --service cloud9

# Get details on the condition key titled `cloud9:Permissions`
policy_sentry query condition-table --service cloud9 --name cloud9:Permissions

Lokale Initialisierung (optional)

root@kitploit:~
# Initialize the policy_sentry config folder and create the IAM database tables.
policy_sentry initialize

# Fetch the most recent version of the AWS documentation so you can experiment with new services.
policy_sentry initialize --fetch

# Override the Access Levels by specifying your own Access Levels (example:, correcting Permissions management levels)
policy_sentry initialize --access-level-overrides-file ~/.policy_sentry/overrides-resource-policies.yml

policy_sentry initialize --access-level-overrides-file ~/.policy_sentry/access-level-overrides.yml

Weitere Verwendung

Befehle

  • create-template: Erstellt die YML-Dateivorlagen zur Verwendung in den Befehlstypen write-policy.

  • write-policy: Nutzt eine YAML-Datei, um Richtlinien für Sie zu schreiben

    • Option 1: CRUD-Ebenen (Lesen, Schreiben, Auflisten, Tagging oder Berechtigungsverwaltung) und die ARN der Ressource angeben. Es wird diese für Sie schreiben. Siehe die Dokumentation
    • Option 2: Eine Liste von Aktionen angeben. Es wird die IAM-Richtlinie für Sie schreiben, aber Sie müssen die ARNs ausfüllen. Siehe die Dokumentation.
  • query: Abfragen der IAM-Datenbanktabellen. Dies kann beim Ausfüllen der Policy-Sentry-Vorlagen helfen oder einfach beim Abfragen der Datenbank für schnelles Wissen.

    • Option 1: Aktionstabelle abfragen (action-table)
    • Option 2: ARN-Tabelle abfragen (arn-table)
    • Option 3: Bedingungstabelle abfragen (condition-table)
  • initialize: (Optional). Eine SQLite-Datenbank erstellen, die alle Services enthält, die über die Aktionen-, Ressourcen- und Bedingungsschlüssel-Dokumentation verfügbar sind. Siehe die .

Python-Bibliotheksnutzung

Wenn Sie Ihren eigenen Python-Code entwickeln und Policy Sentry als Drittanbieterpaket importieren möchten, können Sie die Initialisierung überspringen und die lokale Datenbankdatei nutzen, die mit dem Python-Paket selbst gebündelt ist.

Dies ist besonders nützlich für Entwickler, die die Funktionen von Policy Sentry nutzen möchten, die die Verwendung der IAM-Datenbank erfordern (z. B. Abfragen der IAM-Datenbanktabelle). Auf diese Weise müssen Sie die Datenbank nicht initialisieren und können sie sofort abfragen.

Das Codebeispiel befindet sich hier. Es ist auch unten gezeigt.

root@kitploit:~
from policy_sentry.querying.actions import get_actions_for_service


def example():
    actions = get_actions_for_service('cloud9')  # Then you can leverage any method that requires access to the database.
    for action in actions:
        print(action)

if __name__ == '__main__':
    example()

Die Ergebnisse sehen so aus:

root@kitploit:~
cloud9:CreateEnvironmentEC2
cloud9:CreateEnvironmentMembership
cloud9:DeleteEnvironment
cloud9:DeleteEnvironmentMembership
cloud9:DescribeEnvironmentMemberships
cloud9:DescribeEnvironmentStatus
cloud9:DescribeEnvironments
cloud9:GetUserSettings
cloud9:ListEnvironments
cloud9:ListTagsForResource
cloud9:TagResource
cloud9:UntagResource
cloud9:UpdateEnvironment
cloud9:UpdateEnvironmentMembership
cloud9:UpdateUserSettings

Docker

Wenn Sie Docker anstelle der Installation des Skripts mit Python bevorzugen, unterstützen wir das ebenfalls. Verwenden Sie dies aus dem Stammverzeichnis des Repositorys, um das Docker-Image zu erstellen:

root@kitploit:~
docker build -t kmcquade/policy_sentry .

Verwenden Sie dies, um einige grundlegende Befehle auszuführen:

root@kitploit:~
# Basic commands with no arguments
docker run -i --rm kmcquade/policy_sentry:latest "--help"
docker run -i --rm kmcquade/policy_sentry:latest "query"

# Query the database
docker run -i --rm kmcquade/policy_sentry:latest "query action-table --service all --access-level permissions-management"

Der write-policy-Befehl unterstützt auch die Übergabe der YML-Konfiguration über STDIN. Wenn Sie die Docker-Methode verwenden, probieren Sie es hier aus:

root@kitploit:~
# Write policies by passing in the config via STDIN
cat examples/yml/crud.yml | docker run -i --rm kmcquade/policy_sentry:latest "write-policy"

cat examples/yml/actions.yml | docker run -i --rm kmcquade/policy_sentry:latest "write-policy"

Terraform

Das Terraform-Modul wird hier veröffentlicht und gewartet.

Referenzen

  • Der Dokument-Scraping-Prozess wurde von einem ähnlichen Ansible-Hacking-Skript inspiriert und übernommen.
  • Identitätsbasierte vs. ressourcenbasierte Richtlinien
  • Aktionen, Ressourcen und Bedingungsschlüssel für AWS-Services
Tool herunterladen
AktionenZugriffsebeneRessourcentypen
ssm:GetParameterLesenparameter
ssm:DescribeParametersAuflistenparameter
ssm:PutParameterSchreibenparameter
secretsmanager:PutResourcePolicyBerechtigungsverwaltungsecret
secretsmanager:TagResourceTaggingsecret
Dokumentation