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

0

Ich habe eine Reihe von Amazon Machine Images (AMIs), die geheim gehalten werden müssen, die jedoch mit einer wachsenden Anzahl von Partnern und Kunden geteilt werden, die jeweils ein eigenes AWS-Konto verwenden. Jedes Konto sollte in der Lage sein, Instanzen mit meinem AMI zu starten.

AWS unterstützt dies trivial, indem Sie der ACL des AMI Amazon-Kontonummern hinzufügen können. Es scheint jedoch, dass dieser Ansatz auf 10 Konten beschränkt ist. Wenn ich 50 Kunden habe, kann ich auf diese Weise kein AMI mit ihnen teilen.

Die logische Überlegung ist, eine Richtlinie zu verwenden, um diesen Zugriff zu gewähren, aber ich habe Probleme, eine solche Richtlinie zu formulieren. Es gibt eine Richtlinieneigenschaft zum Gewähren des Zugriffs auf einen ausländischen Principal:

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

Dies wird jedoch vom Prüfer abgelehnt, wenn ich versuche, eine Richtlinie zu schreiben, die Zugriff auf den ARN eines bestimmten AMI gewährt. Ich kann keine Beispiele dafür an anderer Stelle finden. Hat jemand Hinweise oder Vorschläge? Funktioniert dieser Ansatz überhaupt?

dgc
quelle

Antworten:

0

Es stellte sich heraus, dass wir einige Daten falsch interpretiert haben und es kein Limit von 10 Konten gibt. Wir haben keine Dokumentation zu dem Grenzwert gefunden, aber es sind mindestens 5700. Ich habe eine Liste mit 5700 Konto-IDs aus der Liste der öffentlichen Bilder in us-west extrahiert und sie auf einen von mir erstellten AMI-Dummy angewendet zum Zweck des Tests. 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 rein, 5706 raus.

dgc
quelle