Можно ли ограничить пользователей / учетных записей AWS определенным регионом?

24

Мы предоставляем ряд сервисов AWS в регионе ЕС-Запад-1. К сожалению, похоже, что многие наши разработчики и другие сотрудники, которым необходимо создавать временные ресурсы, забывают об этом аспекте AWS и не выбирают этот регион перед запуском экземпляров EC2, созданием сегментов S3 и т. Д. В результате они часто оказываются в регион us-east-1, поскольку это, по-видимому, значение по умолчанию, которое AWS всегда использует.

Есть ли какой-либо способ через IAM (или каким-либо другим способом) ограничить учетные записи пользователей только для запуска / создания вещей в определенном регионе?

Брюс П
источник

Ответы:

25

К сожалению, вы не можете сделать это глобально. Однако для каждого продукта AWS, который его поддерживает, вы обычно можете ограничить доступ к определенному региону.

Например, для EC2 вы можете сделать следующее:

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

Конечно, вам также необходимо издать denyправило, где это уместно.

Вот документация для вышеупомянутого.

EEAA
источник
Отлично. Это выглядит как раз то, что мне нужно. Благодарность!
Брюс П
5
Вместо "Condition": { "condition": {} }этого следует заявить"Condition": { "StringEquals": {} }
Ясны - Арнольд Дэниелс
А как насчет других услуг, таких как S3?
Ив М.
7

Используйте что-то вроде этого. Этот пример ограничивает доступ к двум регионам AWS. Изменить по необходимости.

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Deny",
    "Action": "*",
    "Resource": "*",
    "Condition": {
      "StringNotEquals": {
        "aws:RequestedRegion": [
          "eu-central-1",
          "eu-west-1"
        ]
      }
    }
  }]
}
Сандстр
источник
3
С новым aws:RequestedRegion, это ответ, который в настоящее время является наиболее актуальным
majikman
1
Спасибо, с помощью этой политики вы можете использовать доступные по умолчанию политики AWS и прикреплять только одну строку, и вы эффективно ограничиваете любые услуги.
Lkraider
7

С 25 апреля 2018 года AWS имеет глобальный ресурс aws: RequestedRegion, который можно использовать для ограничения регионов, в которые пользователь может отправлять запросы. Это не зависит от того, является ли услуга региональной или нет, поэтому вы можете применить ее ко всем услугам.

Блог безопасности AWS

К сожалению, вы не можете использовать это в Политике управления службами организации, чтобы применить ее к учетной записи в глобальном масштабе, и вы должны прикрепить политику к каждому отдельному принципалу и проверить, что это так, если вы хотите заблокировать учетную запись в определенных регионах.

jaferrando
источник
4

Принятый ответ по этой теме дал Syntax Error on Policy. Ниже работало для меня:

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

}

мОПС
источник
3

Если вы запрашиваете только действия EC2, то да, вы можете ограничить его, как указано в других ответах. Если это другие сервисы, я не уверен, что вы можете сделать это ... например, AWS Lambda, кажется, lambda:regionне может добавить условие.

nanodgb
источник
0

Из часто задаваемых вопросов для AWS IAM :

В: Можно ли определять пользователей на региональном уровне? Не изначально. Пользователи являются глобальными объектами, такими как учетная запись AWS сегодня. При определении прав пользователя не требуется указывать регион. пользователи могут использовать сервисы AWS в любом географическом регионе.

mtak
источник
3
Вау. Какой плохо написанный ответ от Амазонки. "Не изначально." Означает ли это, что это можно сделать после создания учетной записи? Означает ли это, что AWS не мог, когда он был впервые запущен, но теперь может? «Не требуется указывать регион при определении прав доступа». Я не спрашивал, требовалось ли это. Я спросил, возможно ли это сделать. «пользователи могут использовать сервисы AWS в любом географическом регионе». Очевидно, больше не основано на том, что EEAA опубликовало выше. Оператор «condition» в IAM позволяет ограничивать некоторые службы по регионам. Спасибо точно так же.
Брюс П
1
@BruceP - это не плохой ответ. Это прекрасно. Пользователи глобальны. Пользовательские привилегии могут быть ограничены.
EEAA
0

Я обнаружил, что это работает лучше (позволяет запускать / останавливать / завершать / и т. Д.), Чтобы предоставить полный доступ к EC2 для пользователя только одному региону - любой другой регион показывает ошибку при любой попытке доступа.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-1"
                }
            }
        }
    ]
}
Аль Йослин
источник
0

Это работает для меня, я попытался создать политику с JSON, упомянутым как принятый ответ, но он не работает для меня.

{
    "Version": "2012-10-17",
    "Statement": [{
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ec2:Region": [
                    "us-east-1"
                ]
            }
        }
    }]
}
Пранав Кумар
источник
0

Вот текущее решение - использование «eu-west-1»:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect"    : "Allow",
            "Action"    : "*",
            "Resource"  : "*",
            "Condition": 
            {
                "StringEquals": {
                    "aws:RequestedRegion": "eu-west-1"
                }
            }
        }
    ]
}
Xtigyro
источник