Breve descrição
O Amazon EC2 oferece suporte parcial para permissões ou condições em nível de recurso. É possível usar permissões em nível de recurso para controlar como as identidades do IAM podem acessar recursos específicos do Amazon EC2.
Também é possível usar a ABAC (autorização baseada em tags) para controlar o acesso aos recursos da AWS. Para obter mais informações, consulte Tutorial do IAM: Definir permissões para acessar recursos da AWS com base em etiquetas.
Resolução
Use o exemplo de políticas do IAM a seguir para restringir o acesso às instâncias do Amazon EC2 para seu caso de uso. Em seguida, anexe a política à identidade do IAM à qual você deseja restringir o acesso.
Restrinja acesso apenas para iniciar, interromper ou reinicializar instâncias
O exemplo de política a seguir restringe o acesso de uma identidade do IAM apenas para iniciar, interromper ou reinicializar instâncias do EC2:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances"
],
"Resource": [
"arn:aws:ec2:*:AccountId:instance/*"
],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Owner": "Bob"
}
}
}
]
}
Observação: substitua Owner pela chave da sua tag, Bob pelo valor da sua tag e AccountId pelo ID da sua conta da AWS.
Observação: as instâncias do EC2 têm uma chave de tag Owner com um valor de Bob.
Para restringir outros recursos do Amazon EC2 por tag, certifique-se de que as ações oferecem suporte a permissões e condições em nível de recurso.
Restrinja a execução de instâncias do EC2 por tag
O exemplo de política a seguir usa a chave da tag Owner para restringir o acesso de uma identidade do IAM para executar apenas instâncias do EC2:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:*:AccountId:instance/*"
],
"Condition": {
"StringNotLike": {
"aws:RequestTag/Owner": "*"
}
}
},
{
"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/*",
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:volume/*"
]
},
{
"Sid": "AllowToDescribeAll",
"Effect": "Allow",
"Action": [
"ec2:Describe*"
],
"Resource": "*"
},
{
"Sid": "AllowCreateTagsOnLaunching",
"Effect": "Allow",
"Action": [
"ec2:CreateTags"
],
"Resource": [
"arn:aws:ec2:*:AccountId:*/*"
],
"Condition": {
"StringEquals": {
"ec2:CreateAction": [
"RunInstances"
]
}
}
}
]
}
Observação: substitua Owner pela sua chave de tag e AccountId pelo ID da sua conta.
Observação: se a identidade do IAM tentar executar uma instância do EC2 sem a chave de tag Owner, a operação falha com um erro "AccessDenied".
Restrinja a execução de instâncias do EC2 por tipo de instância
O exemplo de política a seguir restringe o acesso de uma identidade do IAM para executar apenas instâncias do EC2 com o tipo de instância t3.*:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:*:AccountId:instance/*"
],
"Condition": {
"StringNotLike": {
"ec2:InstanceType": "t3.*"
}
}
},
{
"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/*",
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:volume/*"
]
},
{
"Sid": "AllowToDescribeAll",
"Effect": "Allow",
"Action": [
"ec2:Describe*"
],
"Resource": "*"
},
{
"Sid": "AllowCreateTagsOnLaunching",
"Effect": "Allow",
"Action": [
"ec2:CreateTags"
],
"Resource": [
"arn:aws:ec2:*:AccountId:*/*"
],
"Condition": {
"StringEquals": {
"ec2:CreateAction": [
"RunInstances"
]
}
}
}
]
}
Observação: substitua o tipo de instância t3.* pelo seu tipo de instância, por exemplo, t3.nano. Além disso, substitua AccountId pelo ID da sua conta.
Para obter mais informações, consulte Amazon EC2 instance type naming conventions (Convenções de nomenclatura de tipos de instâncias do Amazon EC2).
Observação: a condição ec2:CreateAction limita a criação de tags à ação que cria o recurso do EC2.
Informações relacionadas
Como crio uma política do IAM para controlar o acesso aos recursos do EC2 usando etiquetas?
Como posso usar as tags de política do IAM para restringir a forma como uma instância do EC2 ou um volume do EBS podem ser criados e acessados?
Políticas baseadas em identidade do Amazon EC2