Autoriza outras contas da AWS para acesso à AM2 do EC2

0

Eu tenho um número de Amazon Machine Images (AMIs) que precisam ser mantidos em sigilo, mas compartilhados com um número crescente de parceiros e clientes, cada um usando uma conta da AWS distinta. Cada conta deve poder iniciar instâncias usando minha AMI.

O AWS suporta isso trivialmente, permitindo adicionar números de contas da Amazon à ACL da AMI, mas parece que essa abordagem está limitada a 10 contas. Se eu tiver 50 clientes, não posso compartilhar uma AMI com eles desse jeito.

A consideração lógica é usar uma política para conceder esse acesso, mas estou tendo problemas para formular essa política. Há uma propriedade de política para conceder acesso a um principal estrangeiro:

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

mas isso é rejeitado pelo validador quando tento escrever uma política que dá acesso ao ARN de uma AMI específica. Não consigo encontrar nenhum exemplo disso em outro lugar. Alguém tem pistas ou sugestões? Essa abordagem funciona mesmo?

    
por dgc 11.10.2016 / 21:40

1 resposta

0

Acontece que interpretamos erroneamente alguns dados e não há um limite de 10 contas. Não encontramos nenhuma documentação sobre o limite, mas são pelo menos 5700. Achei isso extraindo uma lista de 5700 IDs de conta da lista de imagens públicas em us-west e aplicando-as a uma AMI fictícia que fiz para o propósito do teste. Código se alguém estiver interessado:

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

    
por 13.10.2016 / 02:19