Como criar uma policy da AWS para o agent
Esta policy permite que o agent execute operações específicas necessárias para o provisionamento, controle e administração de instâncias EC2, além de acessar outros serviços como RDS, Elasticache, CloudWatch, e S3.
Passo 1: acessando o Console da AWS
Primeiro, entre no Console da AWS. Navegue até o serviço IAM e selecione “Policies” no menu lateral. Em seguida, clique em “Create policy” para iniciar a criação de uma nova policy.
Passo 2: criando a policy
Na seção de criação da policy, selecione a aba “JSON” e copie o código abaixo para definir as permissões necessárias para o agente da Elven:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowRunInstances",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*::image/*",
"arn:aws:ec2:*::snapshot/*",
"arn:aws:ec2:*:*:subnet/*",
"arn:aws:ec2:*:*:network-interface/*",
"arn:aws:ec2:*:*:security-group/*",
"arn:aws:ec2:*:*:key-pair/*"
]
},
{
"Sid": "AllowEc2WithRestrictions",
"Effect": "Allow",
"Action": [
"ec2:CreateVolume",
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:*:*:volume/*",
"arn:aws:ec2:*:*:instance/*"
],
"Condition": {
"StringEquals": {
"aws:RequestTag/Owner": "1p-agent"
},
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"Owner",
"Name",
"Environment"
]
}
}
},
{
"Sid": "AllowFunctionsWithRestrictions",
"Effect": "Allow",
"Action": [
"ec2:TerminateInstances",
"ec2:StopInstances",
"ec2:RebootInstances",
"ec2:StartInstances",
"ec2:DeleteSecurityGroup",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:RevokeSecurityGroupIngress",
"ec2:RevokeSecurityGroupEgress",
"ec2:UpdateSecurityGroupRuleDescriptionsIngress",
"ec2:UpdateSecurityGroupRuleDescriptionsEgress"
],
"Resource": [
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:security-group/*"
],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Owner": "1p-agent"
}
}
},
{
"Sid": "AllowFunctions1p",
"Effect": "Allow",
"Action": [
"ec2:CreateTags",
"ec2:CreateSecurityGroup",
"ec2:Describe*",
"rds:Describe*",
"elasticache:Describe*",
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics"
],
"Resource": "*"
},
{
"Sid": "Manage1pAccessKeys",
"Effect": "Allow",
"Action": [
"iam:get*"
],
"Resource": "arn:aws:iam::*:user/${aws:username}"
},
{
"Sid": "SsmAllRegionsToAMis",
"Effect": "Allow",
"Action": "ssm:*",
"Resource": [
"arn:aws:s3:::*",
"arn:aws:ssm:*:*:opsmetadata/*",
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ssm:*:*:parameter/*"
]
}
]
}
Passo 3: criando o usuário 1p-agent
Após criar a policy, navegue até o serviço IAM novamente e crie um novo usuário chamado 1p-agent. Ao criar o usuário, selecione “Attach existing policies directly” e anexe a policy que você acabou de criar ao usuário 1p-agent. Isso permitirá que o agente execute as ações especificadas na policy.
Permissões concedidas pela policy
Esta policy permite ao agente da Elven:
- Provisionar, controlar e administrar instâncias EC2 com a tag “1P”.
- Realizar operações de leitura e listagem em RDS, Elasticache, EC2, IAM, CloudWatch e S3.
- Opcionalmente, conceder acesso completo ao EKS.
Com esta policy, o agente pode realizar todas as operações necessárias para manter a infraestrutura gerenciada de forma eficaz e segura, alinhada às práticas recomendadas pela AWS.