2016-04-28 5 views
1

Ich möchte einen Benutzer in IAM erstellen, der im Grunde alles (Erstellen, Ändern, Löschen) von Ressourcen ausführen kann, die von diesem Benutzer selbst erstellt werden.AWS-IAM-Benutzerrolle oder -Richtlinie, die enthalten ist

Dies würde die Erstellung anderer Rollen und Richtlinien beinhalten ... aber wiederum nur solche, die die Kontrolle von Ressourcen erlauben, die vom übergeordneten Benutzer selbst erstellt wurden.

Der Zweck besteht darin, in der Lage zu sein, eine CloudFormation-Vorlage zu erstellen, die von einem Nicht-Admin-Benutzer ausgeführt werden kann, aber alle erforderlichen Ressourcen (einschließlich Instanzenprofile und Lambda-Ausführungsrollen) erstellt. Alle diese Ressourcen könnten dann nur vom Eigentümer verwaltet werden, was Autonomie und Isolation ermöglicht.

Ich habe das Gefühl, dass dies mit den Bedingungen in der Richtlinie erreicht werden kann, aber nicht genau, wie.

Antwort

1

Dies ist keineswegs perfekte Lösung, und ich bin nicht sicher, ob das ist, was Sie brauchen, aber ich habe vor kurzem etwas ähnliches, und das ist, wie ich es gelöst:

Wir haben eine Rolle, die AmazonElasticMapReduceFullAccess hat und Cloudformation schreibgeschützte Richtlinien (von Amazon verwaltet) und eine zusätzliche benutzerdefinierte Richtlinie mit coloudformation:DeleteStack Erlaubnis (zum Löschen der EMR-Cluster-Ressourcen).

Sie können IAM-Richtlinien auf Ressourcenebene einschränken. Zum Beispiel sieht die benutzerdefinierte Richtlinie zum Löschen Stapel wie folgt aus:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "cloudformation:DeleteStack" 
     ], 
     "Resource": "arn:aws:cloudformation:*:*:stack/EMRCluster*" 
    } 
    ] 
} 

Die Funktionsweise das ist, wenn der Benutzer ein EMR-Cluster benötigt, sie die Rolle übernehmen, und erstellen Sie einen Stapel namens EMRCluster<date>-<UUID> und wenn sie sie getan Entfernen Sie die Clusterressourcen mithilfe von Cloudformation. Dies ist streng genommen nicht wirklich notwendig, da der Benutzer bereits vollen Zugriff auf das EMR hat und die Ressourcen (nicht nur seins) von der EMR Webkonsole oder über die boto3 EMR API entfernen kann ... Es macht die Dinge einfacher und ermöglicht dem Benutzer um nur einen einzigen Anruf bei Cloudformation zu tätigen, anstatt EMR direkt zu verwalten. Es mag ein bisschen komisch aussehen, Cluster mit Cloudformation anstatt direkt zu erstellen und zu löschen, aber es ist viel einfacher, eine einzelne JSON-Vorlage als Ihre benutzerdefinierte Konfiguration zu verwalten ...

Wenn Sie nicht möchten, dass Ihr Benutzer sollte die gesamte EMR-Vollzugriffsberechtigung (ziemlich viel), schlage ich vor, dass Sie mit der EMR-Vollzugriffsrichtlinie herumspielen, um dem Benutzer zu erlauben, nur bestimmte Ressourcen zu erstellen und das Entfernen von Ressourcen in ähnlicher Weise einzuschränken. Vielleicht können Sie dem Benutzer nur die Erlaubnis erteilen, Cloudformation mit einer bestimmten Vorlage aufzurufen? Ich bin nicht sicher, ob das auch ohne andere Berechtigungen funktionieren würde ...

Zusätzlich können Sie in Ihrer Vorlage VisibleToAllUsers=False festlegen (see the docs), so dass nur der Benutzer, der es erstellt hat, in der Lage sein sollte, den Cluster zu verwalten.