AWS-öffentlich zugängliche Ressourcen
Das Ziel dieses Repos ist es, eine Liste aller AWS-Ressourcen zu führen, die öffentlich zugänglich gemacht werden können, und schließlich auch diejenigen, die mit nicht vertrauenswürdigen Konten geteilt werden können (dieser Abschnitt befindet sich noch in der Entwicklung und ist hier noch nicht enthalten).
Die folgenden Konzepte werden in dieser Liste angewendet:
- Ressourcen, die indirekt über eine andere Ressource verfügbar gemacht werden könnten, sind nicht enthalten. Zum Beispiel können CloudTrail-Logs an einen öffentlichen S3-Bucket gesendet werden, aber es ist der S3-Bucket, der falsch konfiguriert ist, daher wird CloudTrail nicht als eine Ressource aufgeführt, die öffentlich gemacht werden kann.
- Einige Ressourcen erfordern möglicherweise mehrere Dinge, die auf eine bestimmte Weise konfiguriert sein müssen, um als öffentlich zu gelten. Zum Beispiel benötigt ein Secrets Manager-Geheimnis, das mit einem KMS verschlüsselt ist, sowohl das Geheimnis als auch den KMS-Schlüssel, die öffentlich sein müssen, um auf das Geheimnis zuzugreifen. Für die Zwecke dieser Liste betrachte ich nur die Ressourcenrichtlinie des Geheimnisses. Ähnlich verhält es sich bei verwalteten ElasticSearch-Clustern: Sie benötigen sowohl die Ressourcenrichtlinie, die öffentlichen Zugriff erlaubt, als auch eine Nicht-VPC-IP. Ich betrachte nur die Ressourcenrichtlinie. Bei einer EC2-Instanz könnten Sie eine EC2 mit einer öffentlichen IP erstellen, aber eine eingeschränkte Sicherheitsgruppe zuweisen, die später geöffnet wird, um öffentlichen Zugriff zu erlauben. Ich betrachte die Erstellung der EC2 mit einer öffentlichen IP als die relevante Aktion, nicht die Änderung der Sicherheitsgruppe.
Roadmap
Ich möchte, dass dieses Repo schließlich Folgendes enthält:
- Beispiel-CLI-Befehle zum Erstellen sowohl einer privaten als auch einer öffentlichen Ressource
- Zugehörige CloudTrail-Logs für diese beiden Ereignisse, damit Sie Überwachungslösungen erstellen und testen können. Beispielsweise finden Sie Beispiel-CloudTrail-Ereignisse für StreamAlert hier
- Zugehörige Describe-Aufrufe für die Ressourcen, um zu zeigen, wie es aussieht, wenn diese Ressourcen öffentlich sind. Beispielsweise finden Sie Beispiel-JSON-Antworten in CloudMappers Testdaten hier.
Ressourcen, die durch Ressourcenrichtlinien öffentlich gemacht werden können
ECR-Repository
Aktionen:
Lambda
Ermöglicht das Aufrufen der Funktion
Aktionen:
Lambda-Layer
Aktionen:
Serverless Application Repository
Aktionen:
Backup
Dokumentation
Aktionen:
EFS
TODO: Muss bestätigt werden, ob dies tatsächlich mit anderen Konten geteilt werden kann. Einige Formulierungen in der Dokumentation lassen mich vermuten, dass dies möglicherweise nur mit Prinzipalen innerhalb eines Kontos geteilt werden kann.
Aktionen:
Glacier
Aktionen:
S3
S3-Buckets können über Richtlinien und ACLs öffentlich sein. S3-Objekte können über ACLs öffentlich sein. ACLs können bei der Bucket- oder Objekterstellung festgelegt werden.
Aktionen:
IAM-Rolle
Aktionen:
KMS-Schlüssel
Aktionen:
Secrets Manager
Aktionen:
CloudWatch Logs
Aktionen:
EventBridge
Erlaubt nur das Senden von Daten in ein Konto
Aktionen:
Dokumentation
Aktionen:
ElasticSearch
Aktionen:
Glue
Aktionen:
SNS
Aktionen:
SQS
Aktionen:
SES
Dokumentation
Aktionen:
Ressourcen, die durch Freigabe-APIs öffentlich gemacht werden können
AMI
Aktionen:
FPGA-Image
Aktionen:
EBS-Snapshot
Aktionen:
RDS-Snapshot
Aktionen:
RDS-DB-Cluster-Snapshot
Aktionen:
Ressourcen, die durch Netzwerkzugriff öffentlich gemacht werden können
API Gateway
Es gibt zugehörige Ressourcenrichtlinien (siehe hier), die dies möglicherweise zu etwas machen, das in mehreren Kategorien sein sollte?
Aktionen:
CloudFront
Aktionen:
Redshift
Aktionen:
RDS
Aktionen:
EC2
Aktionen:
Elastic IP
Aktionen:
ECS
Aktionen:
Global Accelerator
Aktionen:
ELB
Aktionen:
Lightsail
Aktionen:
Neptune
Aktionen:
ElastiCache
Aktionen:
EMR
Aktionen: