Ausgabe
Ich habe eine Terraform-Konfiguration, die auf die Bereitstellung auf AWS abzielt. Es gilt wunderbar, wenn Sie einen IAM-Benutzer verwenden, der die Berechtigung hat, alles zu tun (d {actions: ["*"], resources: ["*"]}
. h. .
Um die Anwendung dieser Terraform-Konfiguration zu automatisieren, möchte ich den Mindestsatz an Berechtigungen ermitteln, der erforderlich ist, um die Konfiguration anfänglich anzuwenden und nachfolgende Änderungen vorzunehmen. Ich möchte ausdrücklich vermeiden, zu weitreichende Berechtigungen in der Richtlinie zu erteilen, z {actions: ["s3:*"], resources: ["*"]}
.
Bisher laufe ich einfach, terraform apply
bis ein Fehler auftritt. Ich schaue mir die Ausgabe oder die Terraform-Protokollausgabe an, um zu sehen, welcher API-Aufruf fehlgeschlagen ist, und füge ihn dann der Deployment-Benutzerrichtlinie hinzu. EC2 und S3 sind besonders frustrierend, da der Name der Aktionen nicht unbedingt mit dem Namen der API-Methode übereinzustimmen scheint. Ich bin mehrere Stunden damit beschäftigt und kann auf einfache Weise feststellen, wie weit ich bin.
Gibt es einen effizienteren Weg, dies zu tun?
Es wäre wirklich schön, wenn Terraform mir sagen würde, welche Erlaubnis/Aktion ich brauche, aber das ist eine Produktverbesserung, die Hashicorp am besten überlassen wird.
Lösung
Obwohl ich immer noch glaube, dass eine solche superstrenge Richtlinie ein ständiger Schmerz sein und wahrscheinlich die Produktivität beeinträchtigen wird (aber möglicherweise vom Projekt abhängt), gibt es jetzt ein Tool dafür.
iamlive verwendet die clientseitige Überwachungsfunktion des AWS SDK, um basierend auf den ausgeführten API-Aufrufen eine minimale Richtlinie zu erstellen. Da Terraform das AWS SDK verwendet, funktioniert dies auch hier.
Im Gegensatz zu meiner vorherigen (und akzeptierten) Antwort sollte iamlive sogar die tatsächlichen IAM-Aktionen richtig machen, die nicht unbedingt 1:1 mit den API-Aufrufen übereinstimmen (und die von CloudTrail protokolliert würden).
Beantwortet von – StephenKing
Antwort geprüft von – Mary Flores (FixError Volunteer)