É possível restringir usuários / contas da AWS para uma região específica?

23

Executamos vários serviços da AWS na região eu-oeste-1. Infelizmente, parece que muitos de nossos desenvolvedores e outros funcionários que precisam criar recursos temporários esquecem esse aspecto da AWS e não selecionam essa região antes de iniciar as instâncias do EC2, criando buckets S3, etc. Como resultado, eles geralmente acabam a região us-east-1 desde que parece ser o padrão que a AWS sempre usa.

Existe alguma forma de o IAM (ou de alguma outra forma) restringir as contas de usuários para apenas iniciar / criar itens em uma região específica?

    
por Bruce P 15.04.2014 / 13:25

9 respostas

25

Infelizmente, você não pode fazer isso globalmente. No entanto, para cada produto da AWS que ofereça suporte a ele, você normalmente poderá limitar o acesso a uma determinada região.

Por exemplo, para o EC2, você pode fazer o seguinte:

{
  "Statement":[{
    "Effect":"allow",
    "Action":"RunInstances",
    "Resource":"*",
    "Condition":{
      "StringEquals":{
        "ec2:Region":"us-west-1"
        }
      }
    }
  ]
}

É claro que você também precisaria emitir uma regra deny quando necessário.

Aqui está a documentação para o acima.

    
por 15.04.2014 / 13:39
4

A resposta aceita neste tópico deu Syntax Error on Policy . Abaixo trabalhei para mim:

{
"Statement": [
    {
        "Sid": "Stmt1375943389569",
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": "eu-central-1"
            }
        }
    }
]

}

    
por 28.09.2016 / 16:08
4

Desde o dia 25 de abril de 2018, a AWS tem um recurso global aws: RequestedRegion que você pode usar para limitar as regiões para as quais um usuário pode enviar solicitações. Isso é independente do serviço ser regional ou não, portanto, você pode aplicá-lo a todos os serviços.

Segurança da AWS Blog

Infelizmente, você não pode usar isso na Política de Controle de Serviço de uma organização para aplicá-la a uma conta globalmente e deve anexar a política a cada entidade principal e auditar isso, caso deseje bloquear uma conta em determinados regiões.

    
por 30.04.2018 / 07:45
3

Se você pedir apenas ações do EC2, então sim, você pode limitá-lo como mencionado em outras respostas. Se forem outros serviços, não tenho certeza se você pode fazer isso ... por exemplo O AWS Lambda não parece ter um lambda:region que você pode adicionar a uma condição.

    
por 23.08.2017 / 16:48
1

Use algo assim. Este exemplo restringe o acesso a duas regiões da AWS. Modifique conforme necessário.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "StringNotEquals": {
        "aws:RequestedRegion": [
          "eu-central-1",
          "eu-west-1"
        ]
      }
    }
  }]
}
    
por 02.07.2018 / 12:26
0

Na FAQ do AWS IAM :

Q: Can users be defined regionally? Not initially. Users are global entities, like an AWS Account is today. No region is required to be specified when defining user permissions. users are able to use AWS services in any geographic region.

    
por 15.04.2014 / 13:27
0

Descobri que isso funciona melhor (permite iniciar / parar / terminar / etc.) para conceder acesso total ao EC2 para um usuário a apenas uma região - todas as outras regiões mostram erros durante qualquer tentativa de acesso.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-1"
                }
            }
        }
    ]
}
    
por 12.01.2018 / 14:52
0

Esse aqui funciona para mim, tentei criar política com o json mencionado como uma resposta aceita, mas não funciona para mim.

{
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": [
                    "us-east-1"
                ]
            }
        }
    }]
}
    
por 30.01.2018 / 10:00
0

Essa é a solução atual - usando "eu-west-1":

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect"    : "Allow",
            "Action"    : "*",
            "Resource"  : "*",
            "Condition": 
            {
                "StringEquals": {
                    "aws:RequestedRegion": "eu-west-1"
                }
            }
        }
    ]
}
    
por 24.06.2018 / 19:21