My first thought was to do this via PAM, similar to how LDAP is integrated into PAM via pam_ldap or somesuch, but I can't find anything that will let me use IAM as an auth backend
Acho que você está pensando o contrário, tente estender seu domínio para o IAM, para que os usuários façam login na AWS com suas credenciais de domínio, em vez de credenciais separadas do IAM. O aspecto mais útil do IAM é o acesso baseado em função e políticas para usuários da AWS - isso não se estende a instâncias de nuvem, portanto é necessário configurar mais domínios tradicionais, como criar uma nuvem privada virtual (VPC - ler VPN) e bootstrapping instâncias para que eles sejam configurados especificamente para o seu domínio.
Specifically, I want to find a way to avoid handing out a keypair that grants unconditional access to ec2-user, which with the default Amazon Linux sudo policy, is essentially root and has the additional downside that there's no audit log (so if someone runs something malicious while SSH'd into an EC2 instance, there's no way to tell who because the Linux user executing commands is always ec2-user).
bootstrapping cloud instances
como você sabe quando inicializa uma instância na nuvem, associa a instância a uma imagem, uma rede, um grupo de segurança, uma chave pública e assim por diante, e você pode ssh ou rdp na instância com o privado chave ou senha, geralmente como o usuário ec2-user ou admin for windows - mas você também pode inicializar a instância usando um serviço chamado cloud-init, ao iniciar uma instância, escolha 'opções avançadas'
Dentrodacaixadetextovocêpodecolaremseuscriptcloud-init,cloud-initéoseubootstrapperbásico,vocêpodeusá-loparainstalarpacotes,executarscripts,modificarosistema,adicionarusuáriosegrupos,etc.AsinstânciasdenuvemdoUserdata'procuramporqualquerdadofornecidopelousuáriofazendoumasolicitaçãohttpnoendereçodeloopbackdasinstâncias(queéredirecionado)
GEThttp://169.254.169.254/2009-04-04/user-data
entãoaquiestáumexemplodeumscriptqueadicionaráalgunsusuárioseoutraschavesautorizadas
#cloud-configusers:-name:demogroups:sudoshell:/bin/bashsudo:['ALL=(ALL)NOPASSWD:ALL']ssh-authorized-keys:-ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQDf0q4PyG0doiBQYV7OlOxbRjle026hJPBWD+eKHWuVXIpAiQlSElEBqQn0pOqNJZ3IBCvSLnrdZTUph4czNC4885AArS9NkyM7lK27Oo8RV888jWc8hsx4CD2uNfkuHL+NI5xPB/QT3Um2Zi7GRkIwIgNPN5uqUtXvjgA+i1CS0Ku4ld8vndXvr504jV9BMQoZrXEST3YlriOb8Wf7hYqphVMpF3b+8df96Pxsj0+iZqayS9wFcL8ITPApHi0yVwS8TjxEtI3FDpCbf7Y/DmTGOv49+AWBkFhS2ZwwGTX65L61PDlTSAzL+rPFmHaQBHnsli8U9N6E4XHDEOjbSMRXuser@example.com-ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQDcthLR0qW6y1eWtlmgUE/DveL4XCaqK6PQlWzi445v6vgh7emU4R5DmAsz+plWooJL40dDLCwBt9kEcO/vYzKY9DdHnX8dveMTJNU/OJAaoB1fV6ePvTOdQ6F3SlF2uq77xYTOqBiWjqF+KMDeB+dQ+eGyhuI/z/aROFP6pdkRyEikO9YkVMPyomHKFob+ZKPI4t7TwUi7x1rZB1GsKgRoFkkYu7gvGak3jEWazsZEeRxCgHgAV7TDm05VAWCrnX/+RzsQ/1DecwSzsP06DGFWZYjxzthhGTvH/W5+KFyMvyA+tZV4i1XM+CIv/Ma/xahwqzQkIaKUwsldPPu00jRNuser@desktopruncmd:-touch/test.txt
essetipodeabordagempermitiráquevocêdesenvolvaumamaneiradeinicializarascontasdeusuáriosepermissões(istoéomesmoqueousuárioec2estáconfigurado).Ouvocêpoderiausarocloud-initouaformaçãodenuvensparaodomíniounirasinstânciasnainicialização.
espero que ajude.