Wenn ein externes Tool in Ihr AWS-Konto muss, gibt es zwei Wege. Der bekannte: einen IAM-Benutzer anlegen und ihm einen Zugriffsschlüssel geben, also ein Passwort, das nie abläuft und in einer Konfigurationsdatei, einem Repository oder einer E-Mail landen kann. Der gute: eine Rolle anlegen, die das Tool aus seinem eigenen AWS-Konto übernimmt. Es gibt keinen Schlüssel, den man aufbewahren oder verlieren könnte; AWS gibt temporäre Anmeldedaten aus, die von selbst ablaufen, und Sie können den Zugriff in einer Sekunde kappen, indem Sie die Rolle löschen.
Dafür muss das Tool es unterstützen (es fragt nach "Zugriff per Rolle", "cross-account role" oder "ARN der Rolle") und Ihnen zwei Angaben machen: die Nummer seines AWS-Kontos und eine externe Kennung (external ID). Damit ist es in zehn Minuten erledigt.
Bevor Sie anfangen: was die Begriffe bedeuten
- IAM
- Der AWS-Dienst, der verwaltet, wer was in Ihrem Konto tun darf.
- AWS-Konto
- Jeder Amazon-Kunde hat ein Konto mit einer zwölfstelligen Nummer. Das externe Tool hat seines; Sie haben Ihres.
- Zugriffsschlüssel
- Das "Benutzer und Passwort" für Programme. Läuft nie ab, und genau das vermeidet diese Anleitung.
- Rolle
- Ein Satz von Berechtigungen, der niemandem fest gehört: wer autorisiert ist, "übernimmt" sie und erhält temporäre Anmeldedaten, die von selbst ablaufen.
- Eine Rolle übernehmen
- AWS um diese temporären Anmeldedaten bitten, um eine Weile mit den Rechten der Rolle zu handeln.
- Vertrauenswürdige Entität
- Wer die Rolle übernehmen darf. Hier das AWS-Konto des externen Tools.
- External ID (externe Kennung)
- Ein zusätzliches Passwort, das die Anfrage zum Übernehmen der Rolle begleitet, damit nur dieses Tool, wenn es für Sie handelt, sie benutzen kann.
- Richtlinie
- Die Liste der Berechtigungen im JSON-Format. Die Anleitung gibt Ihnen ein Beispiel.
- ARN
- Der vollständige und eindeutige Name der Rolle (arn:aws:iam::...). Das ist, was Sie dem Tool geben.
- CloudTrail
- Das Protokoll von allem, was in Ihrem AWS-Konto passiert: wer was wann getan hat. Dient dazu zu sehen, was das Tool tut.
Schritt für Schritt
Sammeln Sie die Angaben des Anbieters
Notieren Sie die Konto-ID des Tools (zwölf Ziffern) und die external ID, die es Ihnen zuweist, eine nur für Sie bestimmte Zeichenkette. Die external ID verhindert das sogenannte "Confused-Deputy-Problem": dass ein anderer Kunde desselben Tools es dazu bringen kann, Ihre Rolle zu benutzen. Teilen Sie sie nicht und verwenden Sie sie nicht mehrfach.
Erstellen Sie die Richtlinie mit minimalen Rechten
In der IAM-Konsole, Richtlinien, Richtlinie erstellen, Registerkarte JSON. Fügen Sie nur die Aktionen ein, die das Tool braucht; ein seriöser Anbieter gibt Ihnen die genaue Liste. Zum Beispiel, um Lightsail-Maschinen anzusehen und zu bedienen:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "lightsail:GetInstances", "lightsail:GetInstance", "lightsail:GetInstanceState", "lightsail:StartInstance", "lightsail:StopInstance", "lightsail:RebootInstance", "lightsail:GetInstanceSnapshots", "lightsail:CreateInstanceSnapshot" ], "Resource": "*" }] }Geben Sie ihr einen wiedererkennbaren Namen, etwa
PanelExterno-Maquinas. WirdAdministratorAccessverlangt, fragen Sie nach dem Grund.Erstellen Sie die Rolle mit dem anderen Konto als vertrauenswürdiger Entität
IAM, Rollen, Rolle erstellen. Typ der vertrauenswürdigen Entität: AWS-Konto, Option Anderes AWS-Konto, und geben Sie die Konto-ID des Anbieters ein. Kreuzen Sie Externe ID erforderlich an und fügen Sie die external ID ein. Kreuzen Sie "MFA erforderlich" nicht an: das Tool ist ein Programm, keine Person. Weiter.
Hängen Sie die Richtlinie an und geben Sie der Rolle einen Namen
Suchen Sie die Richtlinie aus Schritt 2, markieren Sie sie und fahren Sie fort. Name der Rolle: etwas, das sagt, wofür sie dient und wem sie gehört, zum Beispiel
PanelExterno-Simplio. Prüfen Sie die Zusammenfassung: die Vertrauensrichtlinie muss das Konto des Anbieters und die Bedingungsts:ExternalIdzeigen. Erstellen Sie die Rolle.Übergeben Sie den ARN der Rolle
Öffnen Sie die gerade erstellte Rolle und kopieren Sie ihren ARN, in der Form
arn:aws:iam::123456789012:role/PanelExterno-Simplio. Das ist das Einzige, was das Tool braucht; fügen Sie ihn dort ein, wo er verlangt wird. Er ist an sich kein Geheimnis (ohne die external ID und ohne das vertrauenswürdige Konto nützt er nichts), aber veröffentlichen muss man ihn auch nicht.Prüfen Sie Zugriff und Protokoll
Das Tool sollte sich sofort verbinden. Um zu sehen, was es tut, filtern Sie in CloudTrail, Ereignisverlauf, nach dem Namen der Rolle: jede Aktion, die es ausführt, erscheint mit der Rolle als Identität. Wenn Sie den Zugriff eines Tages kappen wollen, löschen Sie die Rolle oder ändern Sie die external ID; die Wirkung tritt ein, sobald die laufenden temporären Anmeldedaten ablaufen, die höchstens eine Stunde gelten, sofern Sie das nicht verlängert haben.
Was schiefgehen kann
Das Tool meldet "not authorized to perform sts:AssumeRole"
Entweder ist die vertrauenswürdige Konto-ID nicht richtig, oder die external ID stimmt nicht überein, oder das Tool versucht, die Rolle mit einem anderen Prinzipal zu übernehmen als dem, den Sie autorisiert haben. Prüfen Sie die Registerkarte Vertrauensstellungen der Rolle und vergleichen Sie sie Buchstabe für Buchstabe mit dem, was der Anbieter Ihnen gegeben hat.
Es verbindet sich, aber ihm fehlt ein Recht für etwas
Die Meldung von AWS sagt genau, welche Aktion fehlt. Fügen Sie sie der Richtlinie aus Schritt 2 hinzu; die Änderung gilt für die nächsten Aufrufe, ohne die Rolle anzufassen.
Und wenn das Tool keine Rollen unterstützt?
Dann ist ein IAM-Benutzer mit minimalen Rechten und einem Zugriffsschlüssel der Plan B (die Anleitung dazu finden Sie in diesem Abschnitt). Wechseln Sie den Schlüssel von Zeit zu Zeit und behalten Sie seine "letzte Verwendung" in IAM im Blick.
Ich habe die Rolle im falschen Konto angelegt
Mit mehreren Konten passiert das. Die Rolle muss in dem Konto liegen, dessen Ressourcen das Tool sehen soll. Löschen Sie sie und legen Sie sie im richtigen an; der ARN ändert sich, aktualisieren Sie ihn im Tool.
In Simplio
Simplio unterstützt die Verbindung per Rolle: die Hilfe zeigt Ihnen die Konto-ID von Simplio und eine für Sie erzeugte external ID und erstellt die Vertrauens- und die Berechtigungsrichtlinie, indem Sie mit Kästchen ankreuzen, was Sie erlauben wollen. Sie fügen den ARN der Rolle ein und fertig: es gibt keinen Schlüssel aufzubewahren, und die Anmeldedaten, die Simplio bei AWS anfordert, laufen nach einer Stunde ab.
Dasselbe, in AWS und in Simplio
| In der AWS-Konsole | In Simplio | |
|---|---|---|
| Die Rolle erstellen | Richtlinie, Rolle, vertrauenswürdige Entität, external ID, ARN: 6 Schritte, 15 Minuten, wenn man weiß, was man tut | Die Hilfe gibt Ihnen Konto, external ID und beide Richtlinien fertig geschrieben: einfügen und ARN kopieren, 3 Minuten |
| Passgenaue Rechte | Den Namen jeder Aktion kennen | Kästchen: nur ansehen, ohne Firewall, ohne Terminal, eine Region |
| Widerrufen | Die Rolle in IAM löschen | Die Verbindung in Simplio oder die Rolle in IAM löschen; keine Schlüssel, denen man nachjagen muss |