Utilizando o Cloud8 com uma credencial AWS customizada de segurança

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:Download*",
       "rds:ListTagsForResource",
       "rds:ModifyDBInstance*",
       "rds:CreateDBSnapshot*",
       "ssm:Describe*",
       "elasticache:Describe*",
       "elasticloadbalancing:Describe*",
       "elasticbeanstalk:Describe*",
       "autoscaling:Describe*",
       "cloudtrail:DescribeTrails",
       "cloudtrail:GetTrailStatus",
       "cloudtrail:Look*",
       "cloudfront:Describe*",
       "storagegateway:Describe*",
       "storagegateway:List*",
       "redshift:Describe*",
       "tag:get*",
       "trustedadvisor:Describe*",
       "iam:Get*",
       "iam:List*",
       "iam:Generate*",
       "organizations:Describe*",
       "organizations:List*",
       "route53:Get*",
       "route53:List*",
       "cloudwatch:Get*",
       "cloudwatch:List*",
       "kms:List*",
       "kms:Describe*",
       "sns: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
...
(insira no primeiro bloco com as permissões gerais)
Cópia para outra região

...
ec2:CopyImage
rds:CopyDBSnapshot
...
(insira no primeiro bloco com as permissões gerais)
Economia e backup de RDS

...
rds:ModifyDBInstance*
rds:CreateDBSnapshot*
...
(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*
...
Load Balancer
...
elasticloadbalancing:RegisterInstancesWithLoadBalancer
elasticloadbalancing:DeregisterInstancesFromLoadBalancer
elasticloadbalancing:RegisterTargets
elasticloadbalancing:DeregisterTargets
...
Edição de Tags
...
ec2:CreateTag*
ec2:DeleteTag*
rds:AddTags*
rds:RemoveTags*
route53:ChangeTags*
elasticloadbalancing:AddTags*
elasticloadbalancing:RemoveTags*
tag:*
...
Fique à vontade para criar a sua própria policy customizada!