Você pode tentar delegar acesso a várias contas da AWS usando papéis do IAM. Vamos supor que você tenha uma função lambda que interrompe / inicia instâncias do EC2 após / durante o horário de expediente. Isso significa que você pode ter implantado o lambda em uma conta master
(sua 1 conta da AWS ) e chamar APIs da AWS em outras contas managed
. Na conta master
, você implantou a função e sua função de execução master
do IAM. Essa função permite que a função assuma outra managed
role implantada em managed
accounts para chamar as respectivas APIs da AWS, por exemplo, boto3 ec2 client stop_instances ou start_instances methods. A função managed
do IAM permite chamar APIs da AWS na conta managed
e é compreendida pela função.
Exemplos importantes dos papéis do IAM (fragmentos do AWS CloudFormation):
"MasterRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"RoleName": "master_role",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
},
"Path": "/",
"Policies": [
{
"PolicyName": "master_assume_policy",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"*"
]
}
]
}
},
...
.
"AccountRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"RoleName": "managed_role",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ">>> ARN_OF_MASTER_ROLE <<<"
},
"Action": "sts:AssumeRole"
}
]
},
"Path": "/",
"Policies": [
{
"PolicyName": "managed_ec2_policy",
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:StopInstances",
"ec2:StartInstances",
...
Você também precisa mudar para a função managed
do IAM chamando AssumeRole
API da função lambda. Existe uma documentação disponível descrevendo este procedimento. Em resumo, você precisa assumir a função managed
do IAM por meio do STS, que retornará as credenciais necessárias para chamar a API.
Aqui estão mais alguns links que podem ajudar você a entender a delegação de várias contas do IAM:
Delegar acesso a contas da AWS usando as funções do IAM
Criando uma função para delegar permissões
Com relação às organizações da AWS, acho que ele pode ajudar você a gerenciar managed
contas de maneira mais central. Você pode criar políticas de SCPs ou de controle de serviço que controlam centralmente o nível de acesso aos serviços da AWS em managed
accounts. A política especifica os serviços e ações que os usuários e funções podem usar nas contas. Você também pode automatizar a criação de contas managed
da AWS com o CloudFormation e configurá-lo conforme necessário. Isso pode incluir a criação de usuários, funções, políticas etc. do IAM. Há um artigo interessante sobre isso disponível no blog da AWS:
AWS Organizations - gerenciamento baseado em políticas para várias contas da AWS