Назад | Перейти на главную страницу

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

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

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

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

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

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

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

Вот документацию по вышеизложенному.

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

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

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

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

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

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

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

}

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

Из Часто задаваемые вопросы по AWS IAM:

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

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

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

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

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

Это текущее решение - с использованием "eu-west-1":

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