O Cloud8 suporta o uso de IAM para o AWS com uma credencial customizada de segurança. Veja um exemplo das permissões mínimas que são necessárias para o acesso e funcionamento efetivo. As ações default são todas read-only e depois há uma sessão para permissões customizadas dependendo da tag atribuida a um servidor.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:CreateImage",
"ec2:CreateSnapshot",
"ec2:ModifyInstanceAttribute",
"ec2:AssociateAddress",
"ec2:RebootInstances",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:CreateTags",
"ec2:DeleteTags",
"rds:Describe*",
"rds:StartDBInstance",
"rds:StopDBInstance",
"rds:StartDBCluster",
"rds:StopDBCluster",
"rds:Download*",
"rds:ListTagsForResource",
"rds:ModifyDBInstance*",
"rds:CreateDBSnapshot*",
"ssm:Describe*",
"savingsplans:Describe*",
"elasticache:Describe*",
"elasticloadbalancing:Describe*",
"elasticbeanstalk:Describe*",
"autoscaling:Describe*",
"ecs:Describe*",
"ecs:List*",
"eks:Describe*",
"eks:List*",
"cloudtrail:DescribeTrails",
"cloudtrail:GetTrailStatus",
"cloudtrail:Look*",
"cloudfront:Describe*",
"cloudfront:Get*",
"cloudfront:List*",
"storagegateway:Describe*",
"storagegateway:List*",
"es:Describe*",
"es:List*",
"elasticache:Describe*",
"elasticache:List*",
"redshift:Describe*",
"workspaces:Describe*",
"lightsail:Get*",
"lambda:Get*",
"lambda:List*",
"tag:get*",
"trustedadvisor:Describe*",
"support:Describe*",
"iam:Get*",
"iam:List*",
"iam:Generate*",
"organizations:Describe*",
"organizations:List*",
"route53:Get*",
"route53:List*",
"cloudwatch:Get*",
"cloudwatch:List*",
"kms:List*",
"kms:Describe*",
"sns:ListSubscriptions*",
"sns:CreateTopic",
"sns:Subscribe",
"sns:ConfirmSubscription",
"rds:CreateEventSubscription"
],
"Resource": "*"
},
{
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
},
{
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::___nome_do_meu_bucket___"
},
{
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::___nome_do_meu_bucket___/*"
}
]
}
Pendência para o cliente: Definir qual o bucket onde são publicados os dados de cobrança (se não souber, o Cloud8 pode te informar). Nota: na policy acima todos os servidores que possuírem a tag exemplo “Cloud8” com valor “Enable”, o Cloud8 poderá executar ações fora das padrões definidas. Neste caso iniciar, parar, rebootar e associar um IP elástico.
Outras permissões
Restringir stop/start a um conjunto de servidores com tags
{
"Effect": "Allow",
"Action": [
"ec2:RebootInstances",
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Cloud8": "Enable"
}
}
},
(no caso servidores que possuam a Tag “Cloud8” com valor “Enable”)
Limpeza de backup/Política de Retenção que apaga AMI/Snapshots segundos regras
...
ec2:DeregisterImage
ec2:DeleteSnapshot
rds:DeleteDBSnapshot
rds:DeleteDBClusterSnapshot
lightsail:DeleteInstanceSnapshot
...
(insira no primeiro bloco com as permissões gerais)
Cópia para outra região
...
ec2:CopyImage
rds:CopyDBSnapshot
rds:CopyDBClusterSnapshot
...
(insira no primeiro bloco com as permissões gerais) Economia e backup de RDS
...
rds:ModifyDBInstance*
rds:CreateDBSnapshot*
rds:CreateDBClusterSnapshot*
...
(insira no primeiro bloco com as permissões gerais)
Monitoração de eventos de RDS
...
sns:Describe*
sns:ListSubscriptions*
sns:CreateTopic
sns:Subscribe
sns:ConfirmSubscription
rds:CreateEventSubscription
...
(insira no primeiro bloco com as permissões gerais)
Execução de scripts via EC2 Command
...
ssm:List*
ssm:Get*
ssm:SendCommand
...
Cópia de segurança (cofre) para outra conta Conta origem:
...
ec2:ModifyImageAttribute
ec2:ModifySnapshotAttribute
rds:ModifyDBSnapshotAttribute
rds:ModifyDBClusterSnapshotAttribute
...
Conta destino:
...
ec2:CopyImage
ec2:CopySnapshot
rds:CopyDBSnapshot
rds:CopyDBClusterSnapshot
...
Redução de custos em Auto Scaling e Beanstalk
...
elasticbeanstalk:Update*
autoscaling:Update*
...
Redução de custos em ECS e Fargate
...
ecs:Describe*
ecs:Update*
...
Redução de custos em OpenSearch/ElasticSearch
...
ess:Update*
...
Load Balancer
...
elasticloadbalancing:RegisterInstancesWithLoadBalancer
elasticloadbalancing:DeregisterInstancesFromLoadBalancer
elasticloadbalancing:RegisterTargets
elasticloadbalancing:DeregisterTargets
...
Edição de Tags – permissões individuais dos componentes (não há um modo geral)
...
tag:*
ec2:CreateTags
ec2:DeleteTags
rds:AddTagsToResource
rds:RemoveTagsFromResource
elasticloadbalancing:RemoveTags
elasticloadbalancing:AddTags
route53:ChangeTags*
dynamodb:Tag*
dynamodb:Untag*
logs:Tag*
logs:Untag*
eks:Tag*
eks:Untag*
elasticache:RemoveTagsFromResource
elasticache:AddTagsToResource
s3:DeleteObjectTagging
s3:DeleteJobTagging
s3:PutBucketTagging
s3:DeleteStorageLensConfigurationTagging
s3:ReplicateTags
s3:PutStorageLensConfigurationTagging
s3:PutObjectVersionTagging
s3:PutObjectTagging
s3:PutJobTagging
s3:DeleteObjectVersionTagging
dms:RemoveTagsFromResource
dms:AddTagsToResource
...
Mudança de tipo de disco
... ec2:ModifyVolume*
...
Redução de custos com Redshift
... redshift:Pause* redshift:Resume*
...
Redução de custos com Workspaces
... workspaces:Stop* workspaces:Start*
...
Suporte a LightSail
... lightsail:Describe* lightsail:Get* lightsail:Stop* lightsail:Start* lightsail:Reboot* lightsail:Create* lightsail:Copy*
...
Fique à vontade para criar a sua própria policy customizada!