2016-07-06 4 views
1

Я пытаюсь использовать политику IAM для ограничения доступа для всех ресурсов AWS либо к публичному IP, либо к VPC. Документация предполагает, что это должно работать, и, похоже, оно отлично работает для случая с ИС. Но как только я добавляю условие для VPC, он ломается.Доступ AWS ограничен публичным IP или VPC

{ 
    "Version": "2012-10-17", 
    "Statement": { 
     "Effect": "Deny", 
     "Action": "*", 
     "Resource": "*", 
     "Condition": { 
      "NotIpAddressIfExists": { 
       "aws:SourceIp": "a.b.c.d/32" 
      }, 
      "StringNotEqualsIfExists": { 
       "aws:sourceVpc": "vpc-1234wxyz" 
      } 
     } 
    } 
} 
+0

Какая вы подтверждаете? – error2007s

+0

В вашей политике возникает синтаксическая ошибка, которая вызывает проблему. – error2007s

+0

Определить * «он ломается». * 'Aws: sourceVpc' имеет очень мало текущих применений. Фактически, [только один] (http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies-vpc-endpoint.html), который я знаю. –

ответ

0

В заявлении «Отклонить», если какое-либо из условий выполнено, запрос будет отклонен.

Для запросов, поступающих извне вашего VPC, существует «aws: SourceIp» и «aws: sourceVpc» не существует, поэтому он оценивает только условие «aws: SourceIp».

Для запросов, поступающих из вашего VPC, существует «aws: SourceIp» и существует «aws: sourceVpc», поэтому он оценивает оба. Поскольку вы находитесь внутри своего VPC, это условие разрешает доступ, но поскольку ваш IP-адрес источника является IP-адресом вашего экземпляра AWS, это условие запрещает доступ.

В основном проблема заключается в том, что вы полагаетесь на «IfExists» с предположением, что только один или другой будет существовать, но внутри вашего VPC оба существуют. Существует special case для этого, только если запрос приходит через Endpoint (например, на S3):

Примечание

Если запрос исходит от узла, который использует конечную точку Amazon VPC, то ключ aws: SourceIp недоступен. Вместо этого вы должны использовать ключ VPC. Дополнительные сведения см. В разделе Конечные точки VPC - Управление использованием конечных точек в руководстве пользователя Amazon VPC.

Только в этом специальном случае Amazon удаляет «aws: SourceIp», что сделает ваш «IsExists» работать.

Смежные вопросы