Quero restringir o acesso dos usuários para que eles possam iniciar instâncias do Amazon Elastic Compute Cloud (Amazon EC2) somente a partir de Amazon Machine Images (AMIs) marcadas.
Resolução
Para restringir o acesso para que os usuários iniciem instâncias do EC2 somente a partir de AMIs marcadas, execute uma das seguintes ações:
- Crie uma AMI a partir de uma instância existente.
- Use uma AMI existente e adicione uma tag à AMI.
Em seguida, crie uma política personalizada do AWS Identity and Access Management (IAM). A política do IAM usa uma condição de tag que restringe as permissões do usuário para iniciar somente instâncias que usam a AMI marcada.
No exemplo de política do IAM a seguir, esses valores de Sid (ID da declaração) são usados:
- O ReadOnlyAccess permite que os usuários visualizem os recursos do EC2 em sua conta com Describe*, que inclui todas as ações do EC2 que começam com Describe. O ReadOnlyAccess também permite que os usuários obtenham a saída do console e as capturas de tela do console de uma instância. As permissões do Amazon CloudWatch para DescribeAlarms e GetMetricStatistics permitem que informações básicas de integridade sobre instâncias apareçam no console do Amazon EC2. A permissão do IAM para ListInstanceProfiles permite que os perfis de instância existentes sejam exibidos na lista de perfis do IAM. A lista de perfis do IAM aparece na página Configure os detalhes da instância quando você inicia uma instância. No entanto, a API ListInstanceProfiles não permite que os usuários anexem um perfil do IAM a uma instância.
- ActionsRequiredtoRunInstancesInVPC concede aos usuários permissão para executar a API RunInstances. Você pode usar qualquer instância, par de chaves, grupo de segurança, volume, interface de rede ou sub-rede na região us-east-1 da AWS. As permissões em nível de recurso especificam o ARN para cada recurso.
- LaunchingEC2withAMIsAndTags permite que os usuários usem uma AMI para iniciar instâncias. A AMI deve ter uma tag Environment com o valor definido como Prod na região us-east-1. A permissão em nível de recurso é definida como um ARN para qualquer AMI que esteja na região us-east-1. A condição corresponde ao valor da chave de tag EC2:ResourceTag/Environment e do valor da chave Prod.
A política do IAM a seguir usa permissões em nível de recurso compatíveis para os recursos necessários para a ação da API RunInstances.
Observação:
- essa política permite que os usuários listem funções ao iniciar uma instância. No entanto, os usuários podem iniciar uma instância com uma função anexada somente quando tiverem a permissão iam:PassRole.
- Essa política não permite que os usuários criem novos grupos de segurança. A menos que os usuários tenham a permissão CreateSecurityGroup do EC2, eles devem selecionar um grupo de segurança existente para iniciar uma instância do EC2. A ação da API EC2:CreateSecurityGroup concede acesso para criar somente um grupo de segurança. A ação não adiciona nem modifica nenhuma regra. Para adicionar regras de entrada, os usuários devem ter permissões para a ação de entrada da API AuthorizeSecurityGroupIngress do EC2 e para a ação de saída da API AuthorizeSecurityGroupEgress do EC2.
- Essa política não permite que os usuários anexem o nome da instância ou modifiquem e anexem tags ao recurso da instância do EC2. A menos que os usuários tenham a permissão CreateTags ao criar a instância, eles devem deixar as tags e o nome em branco.
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "ReadOnlyAccess",
"Effect": "Allow",
"Action": [
"ec2:Describe*",
"ec2:GetConsole*",
"cloudwatch:DescribeAlarms",
"cloudwatch:GetMetricStatistics",
"iam:ListInstanceProfiles"
],
"Resource": "*"
},
{
"Sid": "ActionsRequiredtoRunInstancesInVPC",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:us-east-1:AccountId:instance/*",
"arn:aws:ec2:us-east-1:AccountId:key-pair/*",
"arn:aws:ec2:us-east-1:AccountId:security-group/*",
"arn:aws:ec2:us-east-1:AccountId:volume/*",
"arn:aws:ec2:us-east-1:AccountId:network-interface/*",
"arn:aws:ec2:us-east-1:AccountId:subnet/*"
]
},
{
"Sid": "LaunchingEC2withAMIsAndTags",
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:us-east-1::image/ami-*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Environment": "Prod"
}
}
}
]
}