Estou usando o comando "aws ec2 run-instance" (da CLI (AWS Command Line Interface) ) para iniciar uma instância do Amazon EC2 . Quero definir uma função do IAM para a instância do EC2 que estou iniciando. A função do IAM está configurada e posso usá-la com êxito ao iniciar uma instância da interface da web da AWS. Mas quando tento fazer isso usando esse comando e a opção "--iam-instance-profile", ele falhou. A execução de "ajuda das instâncias de execução do aws ec2" mostra os subcampos Arn = e Name = para o valor. Quando tento procurar o Arn usando "aws iam list-instance-profiles", é exibida a seguinte mensagem de erro:
Ocorreu um erro do cliente (AccessDenied): Usuário: arn: aws: sts :: xxxxxxxxxxxx: função assumida / shell / i-15c2766d não está autorizado a executar: iam: ListInstanceProfiles no recurso: arn: aws: iam :: xxxxxxxxxxxx: instance -perfil/
(onde xxxxxxxxxxxx é o número da minha conta da AWS com 12 dígitos)
Procurei a cadeia Arn pela interface do usuário da web e a usei via "--iam-instance-profile Arn = arn: aws: iam :: xxxxxxxxxxxx: instance-profile / shell" no comando run-instance, e que falhou com :
Ocorreu um erro do cliente (UnauthorizedOperation): Você não está autorizado a executar esta operação.
Se eu deixar completamente de fora a opção "--iam-instance-profile", a instância será iniciada, mas não terá a configuração de função do IAM necessária. Portanto, a permissão parece ter algo a ver com o uso de "--iam-instance-profile" ou com o acesso aos dados do IAM. Repeti várias vezes em caso de falhas da AWS (às vezes acontecem) e sem sucesso.
Suspeitei que talvez exista uma restrição de que uma instância com uma função do IAM não tenha permissão para iniciar uma instância com uma função do IAM mais poderosa. Mas, neste caso, a instância em que estou executando o comando tem a mesma função do IAM que estou tentando usar. chamado "shell" (embora eu também tenha tentado usar outro, sem sorte).
A definição de uma função do IAM nem sequer é permitida em uma instância (por meio de suas credenciais da função do IAM)?
Existe alguma permissão mais alta da função do IAM necessária para usar as funções do IAM do que a necessária apenas para iniciar uma instância simples?
"--Iam-instance-profile" é a maneira apropriada de especificar uma função do IAM?
Preciso usar um subconjunto da string Arn ou formatá-lo de outra maneira?
É possível configurar uma função do IAM que possa ser acessada por qualquer função do IAM (talvez um "Super Root IAM" ... componha esse nome)?
Para sua informação, tudo envolve o Linux em execução nas instâncias. Além disso, estou executando tudo isso em uma instância porque não consegui instalar essas ferramentas na minha área de trabalho. Isso e eu não quero colocar minhas credenciais de usuário do IAM em nenhum armazenamento da AWS, conforme recomendado pela AWS aqui .
depois de respondido:
Não mencionei a permissão de instância de inicialização de "PowerUserAccess" (vs. "AdministratorAccess") porque não sabia que era necessário um acesso adicional no momento em que a pergunta foi feita. Eu assumi que a função do IAM era "informação" anexada ao lançamento. Mas é realmente mais do que isso. É uma concessão de permissão.
fonte
Iniciar uma instância do EC2 com uma função do IAM requer acesso administrativo ao recurso do IAM. Isso se aplica mesmo se a nova instância tiver exatamente a mesma função que a instância que está executando o lançamento. A instância da qual eu estava iniciando tinha permissão "PowerUserAccess", que permitia iniciar uma instância, mas não o acesso à função do IAM. Depois que eu avancei a permissão na instância de lançamento para "AdministratorAccess", funcionou.
Como as funções do IAM concedem permissões, há claramente um problema de segurança a ser resolvido. Você não gostaria que as funções do IAM fossem um meio de permitir a escalação de permissões. Mas isso também significa que, para conceder qualquer função do IAM, a instância de inicialização deve ter "AdministratorAccess" ou estar usando chaves de acesso / segredo do usuário (com essa permissão) de dentro da instância (não recomendado), o que permitiria conceder qualquer função do IAM.
Ser capaz de iniciar uma instância com a mesma permissão (a mesma função do IAM) mantida pela instância que executou o lançamento seria útil, mas o EC2 ou o IAM não possuem esse nível de granularidade ou os meios para verificar com segurança esse .
fonte