Авторизуйте другие учетные записи AWS для доступа ECI AMI

297
dgc

У меня есть несколько образов машин Amazon (AMI), которые нужно держать в секрете, но делиться ими с растущим числом партнеров и клиентов, каждый из которых использует отдельную учетную запись AWS. Каждая учетная запись должна иметь возможность запускать экземпляры, используя мой AMI.

AWS поддерживает это тривиально, позволяя добавлять номера учетных записей Amazon в ACL AMI, но похоже, что этот подход ограничен 10 учетными записями. Если у меня 50 клиентов, я не смогу поделиться с ними AMI.

Логическим соображением является использование политики для предоставления этого доступа, но у меня возникают проблемы при формулировании такой политики. Существует свойство политики для предоставления доступа иностранному принципалу:

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

но это отклоняется валидатором, когда я пытаюсь написать политику, которая дает доступ к ARN конкретного AMI. Я не могу найти никаких примеров этого в другом месте. У кого-нибудь есть подсказки или предложения? Этот подход вообще работает?

0

1 ответ на вопрос

0
dgc

Оказывается, мы неверно истолковали некоторые данные, и не существует ограничения в 10 учетных записей. Мы не нашли никакой документации о том, что такое ограничение, но оно составляет не менее 5700. Я нашел это, извлекая список из 5700 идентификаторов учетных записей из списка общедоступных изображений на западе США и применяя их к фиктивному AMI, который я сделал для целей теста. Код, если кто-то заинтересован:

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, 5706.