Há várias contas da AWS que eu não controle. Solicitei que os proprietários da conta implantassem uma função do IAM, TrustingSecurityAuditor
, em suas contas, o que concede o direito de assumir a função TrustingSecurityAuditor
para uma função diferente do IAM em minha conta da AWS, TrustedSecurityAuditor
. ( Documentos para delegar acesso )
Isso funciona muito bem e permite que eu e minha equipe de segurança forneçam serviços de auditoria de segurança para esses outros titulares de conta na empresa. Para fazer isso, criamos uma instância ec2 com a função TrustedSecurityAuditor
IAM e nosso código solicita credenciais temporárias de cada uma das contas usando STS fazendo um AssumeRole
para o papel TrustingSecurityAuditor
de cada conta.
Agora, quero criar um serviço adicional em execução em uma instância ec2 diferente na minha conta, que pode não apenas assumir o papel dessas contas "Confiantes", mas também fazer outras coisas em minha conta, como acessar o DynamoDB da minha conta. informação.
Se eu aplicar a função TrustedSecurityAuditor
à instância, não tenho as permissões locais de que preciso (como o acesso ao DynamoDB).
Não posso aplicar várias funções do IAM a uma instância (a menos que esteja enganado).
Quando eu tento criar uma nova função, MyNewService
, com acesso ao DynamoDB que pode AssumeRole
à função TrustedSecurityAuditor
na esperança de usar essas credenciais STS para fazer uma segunda AssumeRole
com a TrustingSecurityAuditor
papel na conta externa eu encontro este problema:
Eu sou capaz de AssumeRole
da função MyNewService
para a função TrustedSecurityAuditor
, mas quando eu faço a segunda AssumeRole
para a função TrustingSecurityAuditor
, a AWS retorna o erro
User: arn:aws:sts::123456789012:assumed-role/TrustedSecurityAuditor/MyNewService is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::123456789012:role/TrustingSecurityAuditor
A razão para isso é que o "usuário" que está tentando o AssumeRole
é
arn:aws:sts::123456789012:assumed-role/TrustedSecurityAuditor/MyNewService
não
arn:aws:sts::123456789012:assumed-role/TrustedSecurityAuditor
O que isso implica é que você não pode encadear seu AssumeRole
s porque o ARN de origem de uma chamada, quando ela vem de uma função assumida, não é apenas a função assumida, mas a função assumida com o rolename do assumidor preso no final.
Uma solução que estou relutante em usar é que eu poderia adicionar as permissões necessárias, por exemplo, a capacidade de usar o DynamoDB para a função TrustedSecurityAuditor
. A razão pela qual estou relutante é que só preciso dessa permissão na instância MyNewService
, não na minha instância original, que faz apenas auditoria de segurança e não precisa acessar o DynamoDB.
Alguma sugestão de como realizar o que estou procurando?