Cloudsplaining ist ein AWS IAM Security Assessment Tool, das Verstöße gegen das Least-Privilege-Prinzip identifiziert und einen risikopriorisierten Bericht erstellt.
Cloudsplaining ist ein AWS IAM-Sicherheitsbewertungstool, das Verstöße gegen das Least-Privilege-Prinzip identifiziert und einen nach Risiko priorisierten HTML-Bericht erstellt.
Die vollständige Dokumentation finden Sie auf dem Projekt auf ReadTheDocs.
Cloudsplaining identifiziert Verstöße gegen das Least-Privilege-Prinzip in AWS IAM-Richtlinien und erstellt einen ansprechenden HTML-Bericht. Es kann alle Richtlinien in Ihrem AWS-Konto, über mehrere AWS-Konten hinweg oder eine einzelne Richtliniendatei scannen.
Es hilft, IAM-Aktionen zu identifizieren, die keine Ressourceneinschränkungen nutzen. Es unterstützt auch die Priorisierung des Behebungsprozesses, indem es IAM-Richtlinien kennzeichnet, die die folgenden Risiken für das betreffende AWS-Konto ohne Einschränkung darstellen:
s3:GetObject, ssm:GetParameter, secretsmanager:GetSecretValue)Cloudsplaining identifiziert auch IAM-Rollen, die von AWS-Computing-Diensten (wie EC2, ECS, EKS oder Lambda) übernommen werden können, da sie ein größeres Risiko darstellen können als benutzerdefinierte Rollen – insbesondere wenn der AWS-Computing-Dienst auf einer Instanz ausgeführt wird, die direkt oder indirekt mit dem Internet verbunden ist. Die Kennzeichnung dieser Rollen ist für Penetrationstester (oder Angreifer) unter bestimmten Szenarien besonders nützlich. Wenn ein Angreifer beispielsweise Berechtigungen zur Ausführung von ssm:SendCommand erlangt und privilegierte EC2-Instanzen mit installiertem SSM-Agenten vorhanden sind, kann er effektiv über die Berechtigungen dieser EC2-Instanzen verfügen. Remote Code Execution über AWS Systems Manager Agent war bereits ein bekannter Eskalations-/Ausnutzungspfad, aber Cloudsplaining kann die Identifizierung dieser Fälle erleichtern. Beispiele finden Sie im Beispielbericht.
Sie können auch eine benutzerdefinierte Ausschlussdatei angeben, um Ergebnisse zu filtern, die aus verschiedenen Gründen False Positives sind. Beispielsweise sind Benutzerrichtlinien von Natur aus freizügig, während Systemrollen im Allgemeinen restriktiver sind. Möglicherweise haben Sie auch Ausschlüsse, die für die Multi-Account-Strategie Ihrer Organisation oder die AWS-Anwendungsarchitektur spezifisch sind.
Policy Sentry hat uns gezeigt, dass es möglich ist, IAM-Richtlinien endlich in skalierbarer Weise nach dem Least-Privilege-Prinzip zu erstellen. Vor der Veröffentlichung von Policy Sentry war es zu einfach, IAM-Richtliniendokumente zu finden, denen Ressourceneinschränkungen fehlten. Betrachten Sie die folgende Richtlinie, die es dem IAM-Principal (einer Rolle oder einem Benutzer) erlaubt, s3:PutObject auf einem beliebigen S3-Bucket im AWS-Konto auszuführen:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "*"
}
]
}
Das ist schlecht. Idealerweise sollte der Zugriff gemäß den Ressourcen-ARNs eingeschränkt werden, wie folgt:```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Policy Sentry macht es wirklich einfach, dies zu tun. Sobald Infrastructure-as-Code-Entwickler oder AWS-Administratoren mit dem Tool vertraut werden (das recht einfach zu bedienen ist), haben wir festgestellt, dass die Adoption sehr schnell beginnt. Allerdings, wenn Sie AWS bereits nutzen, gibt es wahrscheinlich einen sehr großen Rückstand an IAM-Richtlinien, die einer Verbesserung bedürfen. Wenn Sie Hunderte von AWS-Konten mit Dutzenden von Richtlinien in jedem haben, wie können wir diese AWS-Konten absichern, indem wir programmatisch die Richtlinien identifizieren, die korrigiert werden sollten?
Deshalb haben wir Cloudsplaining geschrieben.
Cloudsplaining identifiziert Verstöße gegen das Prinzip der minimalen Rechte in AWS-IAM-Richtlinien und erstellt einen ansprechenden HTML-Bericht. Es kann alle Richtlinien in Ihrem AWS-Konto, über mehrere AWS-Konten hinweg oder eine einzelne Richtliniendatei scannen.
brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining
#### Pip3```bash
pip3 install --user cloudsplaining
cloudsplaining von der Kommandozeile aus ausführen können, indem Sie cloudsplaining --help eingeben.Um die Bash-Vervollständigung zu aktivieren, fügen Sie Folgendes in Ihre .bashrc ein:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"
Um die ZSH-Vervollständigung zu aktivieren, fügen Sie dies in Ihre .zshrc ein:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"
Sie können auch eine einzelne Richtliniendatei scannen, um Risiken zu identifizieren, anstatt eines gesamten Kontos.```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json
Die Ausgabe wird eine Beschreibung des Fundes sowie eine Liste der IAM-Aktionen enthalten, die keine Ressourceneinschränkungen nutzen.
Die Ausgabe wird wie folgt aussehen:```console
Issue found: Data Exfiltration
Actions: s3:GetObject
Issue found: Resource Exposure
Actions: ecr:DeleteRepositoryPolicy, ecr:SetRepositoryPolicy, s3:BypassGovernanceRetention, s3:DeleteAccessPointPolicy, s3:DeleteBucketPolicy, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccessPointPolicy, s3:PutAccountPublicAccessBlock, s3:PutBucketAcl, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutObjectAcl, s3:PutObjectVersionAcl