Eu tenho uma função anexada a um LaunchConfiguration para uma instância do EC2, que fornece privilégios à instância do EC2 para fazer certas coisas, como fazer logs do Cloudwatch (o contexto não é importante para a pergunta). No Cloudformation, o papel se parece com:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: 'ec2.amazonaws.com'
Action: 'sts:AssumeRole'
Policies: ...
Se eu visualizar a função no console da AWS, em "Relações de confiança", ele diz "Entidades confiáveis: o(s) provedor(es) de identidade ec2.amazonaws.com" :
Presumo que o Cloudformation AssumeRolePolicyDocument.Principal.Service
mapeia para a "Trusted Entity" no console (que, aliás, é uma maneira estranha de nomear as coisas, porque li "Principal" como tendo um significado diferente no IAM, mas enfim... ). Estou forçando meu cérebro tentando juntar o que está acontecendo. Minhas perguntas são:
- O que exatamente é uma "entidade confiável" do IAM?
- Como é que a entidade 'ec2.amazonaws.com' "assume o papel"? O conceito do serviço 'ec2.amazonaws.com' assumindo que o rolo simplesmente não funciona comigo.
- Em que sentido a entidade 'ec2.amazonaws.com' está "fornecendo identidades"?
- Onde posso encontrar uma lista completa dessas chamadas entidades confiáveis?
O AssumeRolePolicyDocument especifica quem pode assumir a função. Eu suspeito que você pode especificar que várias entidades podem assumir uma função, mas na prática eu escrevo uma função para cada serviço.
Você pode pensar em funções do IAM semelhantes às funções que as pessoas têm. Meu papel como "arquiteto da empresa XYZ" me dá permissão para entrar no escritório, fazer login no sistema, esse tipo de coisa. Se eu assumir um papel como, digamos, um policial, tenho direitos adicionais, como entrar em uma delegacia de polícia, prender pessoas, etc.