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

24

Executamos vários serviços da AWS na região eu-west-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 instâncias do EC2, criar buckets S3, etc. Como resultado, eles geralmente terminam em a região us-east-1, pois parece ser o padrão que a AWS sempre usa.

Existe alguma maneira pelo IAM (ou de alguma outra maneira) de restringir as contas de usuário para iniciar / criar apenas coisas em uma região específica?

Bruce P
fonte

Respostas:

25

Infelizmente você não pode fazer isso globalmente. No entanto, para cada produto da AWS que oferece suporte, normalmente você pode 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"
        }
      }
    }
  ]
}

Obviamente, você também precisará emitir uma denyregra, quando apropriado.

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

EEAA
fonte
Perfeito. Parece exatamente o que eu preciso. Obrigado!
Bruce P
5
Em vez disso "Condition": { "condition": {} }, deve indicar"Condition": { "StringEquals": {} }
Jasny - Arnold Daniels
E quanto a outros serviços como o S3?
Yves M.
7

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"
        ]
      }
    }
  }]
}
sandstrom
fonte
3
Com o novo aws:RequestedRegion, esta é a resposta que é agora mais relevante
majikman
1
Obrigado, com esta política, você pode usar as políticas disponíveis padrão da AWS, anexar apenas uma delas em linha e restringir efetivamente quaisquer serviços.
lkraider
7

Desde 25 de abril de 2018, a AWS possui 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.

Blog de segurança da AWS

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

jaferrando
fonte
4

Resposta aceita nesta discussão deu Syntax Error on Policy. Abaixo trabalhou para mim:

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

}

PUG
fonte
3

Se você solicitar apenas ações do EC2, sim, poderá limitá-lo conforme mencionado em outras respostas. Se houver outros serviços, não tenho certeza de que você possa fazê-lo ... por exemplo, o AWS Lambda parece não ter um que lambda:regionvocê pode adicionar a uma condição.

nanodgb
fonte
0

Nas Perguntas frequentes sobre o AWS IAM :

P: Os usuários podem ser definidos regionalmente? Inicialmente não. Os usuários são entidades globais, como uma conta da AWS atualmente. Não é necessário especificar nenhuma região ao definir permissões de usuário. os usuários podem usar os serviços da AWS em qualquer região geográfica.

mtak
fonte
3
Uau. Que resposta mal escrita da Amazônia. "Não inicialmente." Isso significa que isso pode ser feito após a criação da conta? Isso significa que a AWS não podia quando foi lançada pela primeira vez, mas pode agora? "Nenhuma região precisa ser especificada ao definir permissões de usuário." Não perguntei se era necessário. Eu perguntei se era possível fazê-lo. "os usuários podem usar os serviços da AWS em qualquer região geográfica." Aparentemente, não mais com base no que a AEA postou acima. A declaração "condição" no IAM permite restringir alguns serviços por região. Obrigado da mesma forma.
Bruce P
1
@BruceP - não é uma resposta ruim. Está perfeitamente bem. Usuários são globais. Os privilégios de usuário podem ser restritos.
EEAA
0

Achei que isso funcionava melhor (permite iniciar / parar / encerrar / etc.) Para conceder acesso completo ao EC2 para um usuário em 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"
                }
            }
        }
    ]
}
Al Joslin
fonte
0

Este funciona para mim, tentei criar uma política com o json mencionado como 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"
                ]
            }
        }
    }]
}
Pranav Kumar
fonte
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"
                }
            }
        }
    ]
}
Xtigyro
fonte