No momento, tenho um bucket S3 compartilhado que tem acesso específico a caminhos-chave específicos (ou seja, pastas) para diferentes instâncias. Consegui criar um perfil de instância com minha nova função e testar sem problemas para limitar o acesso a essa pasta.
Meu problema é que existe uma função genérica com políticas definidas, que eu também quero poder incluir na minha nova função para cada pilha.
Na formação da nuvem, é possível incluir políticas definidas em uma função para serem incluídas em outra função sem precisar redefinir o documento de política na nova função?
Algo como o seguinte:
"AppTierS3AccessRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [ "ec2.amazonaws.com" ]
},
"Action": [ "sts:AssumeRole" ]
}
]
},
"Path": "/",
"Policies": [ { "Ref": "existing-policy" } ]
}
},
A "política existente" é a parte importante aqui. Eu tentei encontrar o arn da política existente para tentar fazer referência a ela, mas estou um pouco preso.
fonte
Respostas:
src: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html
Os
AWS::IAM::Role
tipos agora têm umManagedPolicyArns
campo onde você pode definir isso. Você só precisa pegar o ARN (fácil de pegar no console do IAM) e colocá-lo nesse campo. No exemplo abaixo, criei uma função que fornece acesso ECR somente leitura para que minha imagem possa extrair contêineres do docker do ECR.fonte
Você pode conseguir isso usando políticas gerenciadas . Coloque a política definida que você deseja compartilhar em uma política gerenciada pelo cliente e anexe-a a cada função em que deseja usá-la. Quaisquer alterações futuras em sua política gerenciada serão aplicadas imediatamente a todas as funções que têm a política gerenciada anexada.
Você pode criar a política gerenciada pelo cliente no CloudFormation, por meio de um recurso AWS :: IAM :: ManagedPolicy , ou anexar uma política gerenciada existente.
fonte
Para expandir a resposta de @ markusk, re: Políticas gerenciadas - sim, isso.
Exemplo:
fonte
Não, você não pode incorporar uma função em outra função no momento. As únicas alternativas em que consigo pensar são:
fonte