Autorisieren Sie andere AWS-Konten für den EC2-AMI-Zugriff

432
dgc

Ich habe eine Reihe von Amazon Machine Images (AMIs), die privat gehalten werden müssen, aber mit einer wachsenden Anzahl von Partnern und Kunden gemeinsam genutzt werden müssen, die jeweils einen eigenen AWS-Account verwenden. Jedes Konto sollte Instanzen mit meiner AMI starten können.

AWS unterstützt dies auf triviale Weise, indem Sie Amazon-Kontonummern zur ACL des AMI hinzufügen können. Der Ansatz ist jedoch auf 10 Konten beschränkt. Wenn ich 50 Kunden habe, kann ich keinen AMI auf diese Weise mit ihnen teilen.

Die logische Überlegung ist die Verwendung einer Richtlinie, um diesen Zugriff zu gewähren. Ich habe jedoch Schwierigkeiten, eine solche Richtlinie zu formulieren. Es gibt eine Richtlinieneigenschaft, um einem ausländischen Auftraggeber Zugriff zu gewähren:

"Principal": {"AWS": "accountnumber"} 

Dies wird jedoch vom Validator zurückgewiesen, wenn ich versuche, eine Richtlinie zu schreiben, die Zugriff auf den ARN eines bestimmten AMI ermöglicht. Ich kann keine Beispiele dafür anderswo finden. Hat jemand Hinweise oder Anregungen? Funktioniert dieser Ansatz überhaupt?

0

1 Antwort auf die Frage

0
dgc

Es stellte sich heraus, dass wir einige Daten falsch interpretiert haben, und es gibt kein Limit von 10 Konten. Wir haben keine Dokumentation gefunden, was das Limit ist, aber es ist mindestens 5700. Ich fand dies, indem ich eine Liste von 5700 Konto-IDs aus der Liste der öffentlichen Bilder in us-west extrahierte und sie auf eine von mir erstellte Dummy-AMI anwendete zum Zweck der Prüfung. Code, wenn jemand interessiert ist:

aws --profile dgc@domain --region us-west-2 ec2 describe-images >images.json  jq -r .Images[].OwnerId <images.json | sort | uniq <images.json >ids.txt  wc -l ids.txt 5705  ( echo '{"Add":[' for id in $(cat ids.txt); do echo '{"UserId":"'$id'"},' done echo '{"UserId":"##one-last-id-to-end-the-json-array-with##"}' echo ']}' ) >perms.json  aws --profile dgc@domain --region us-west-2 ec2 modify-image-attribute --image-id example-ami-id --launch-permission "$(cat perms.json)"  aws --profile dgc@domain --region us-west-2 ec2 describe-image-attribute --image-id example-ami-id --attribute launchPermission | jq -r '.LaunchPermissions[].UserId' | wc -l 5706 

5706 Zoll, 5706 Zoll.