Рейтинг:0

Профиль IAM позволяет создать подсеть VPC IPV6 в некоторых регионах. Почему в других регионах не получается?

флаг br

В тестовой среде для моделирования более крупной проблемы у меня есть пользователь IAM с напрямую подключенным профилем IAM. Я также пробовал с профилем, прикрепленным к роли IAM, которую принял пользователь IAM.

Профиль позволяет CloudFormation создавать VPC с IPv6CidrBlock и подсетью IPv6Cidr. Этот облачный стек всегда отлично создается в us-east-1 и некоторых других регионах. При дальнейшем тестировании другие регионы всегда терпят неудачу. Не удается создать подсеть IPv6. Исследование показало, что для некоторых регионов необходимо одно дополнительное действие профиля IAM, "ec2:DescribeNetworkAcls". Например us-east-1 и eu-west-2 не требуют дополнительных действий. eu-central-1 и несколько других регионов требуют дополнительных действий профиля IAM.

  1. Есть ли какая-либо известная причина таких различий в требованиях между регионами? Существуют ли какие-либо настройки службы EC2 или VPC, которые можно запросить, чтобы увидеть разницу?
  2. Почему CloudTrail не регистрирует сообщение об ошибке, когда в профиле IAM отсутствует действие «ec2:DescribeNetworkAcls»?
  3. Для предыдущих сбойных регионов, когда действие добавляется в профиль IAM, при повторном тестировании CloudTrail не регистрирует успешное событие с именем «DescribeNetworkAcls», хотя регистрирует все другие связанные события.

Ошибка, показанная в CloudFormation, но не в CloudTrail:

"ResourceStatus": "CREATE_FAILED",
Логический идентификатор: подсеть,
«ResourceStatusReason»: 
«Не удалось получить атрибут Ipv6CidrBlocks для AWS::EC2::VPC, с сообщением об ошибке У вас нет прав на выполнение этой операции. (Служба: Ec2, код состояния: 403, идентификатор запроса: XXX, расширенный идентификатор запроса: ноль).. .

При возникновении ошибки добавление следующего действия IAM-политики устраняет проблему. Тем не менее, это событие EventName никогда не регистрируется CloudTrail:

"ec2:ОписатьNetworkAcls"

Шаблон Cloudformation:

---
AWSTemplateFormatVersion: "2010-09-09"
Описание: «Тестовый стек»
Ресурсы:
  ВКД:
    Тип: AWS::EC2::VPC
    Характеристики:
      СидрБлок: 172.16.0.0/16
      Енабледнсуппорт: правда
      EnableDnsHostnames: правда
      InstanceTenancy: по умолчанию

  ВПЧИПv6:
    Тип: AWS::EC2::VPCCidrBlock
    Характеристики:
      AmazonProvidedIpv6CidrBlock: правда
      VpcId: !Ref VPC

  Подсеть:
    Тип: AWS::EC2::Подсеть
    Зависит от:
      - ВПЧИПv6
    Характеристики:
      СидрБлок: 172.16.254.0/23
      Ipv6CidrBlock: !Select [0, !Cidr [!Select [0, !GetAtt 'VPC.Ipv6CidrBlocks'], 1, 64]]
      MapPublicIpOnLaunch: ложь
      VpcId: !Ref VPC

IAM-политика

{
    «Версия»: «2012-10-17»,
    "Заявление": [
        {
            "Sid": "CloudFormationStackActions",
            «Эффект»: «Разрешить»,
            "Действие": [
                "Облакообразование:СоздатьСтек",
                "облако: стек обновлений",
                "cloudformation:описать стеки",
                "cloudformation:DescribeStackEvents",
                "облако: ListStackResources"
            ],
            "Ресурс": [
                "*"
            ]
        },
        {
        {
            "Sid": "ТЕСТИРОВАНИЕVPCIPv6Subnet",
            «Эффект»: «Разрешить»,
            "Действие": [
                "ec2:СоздатьVpc",
                "ec2: Создать подсеть",
                "ec2:AssociateVpcCidrBlock",
                "ec2:AssociateSubnetCidrBlock",
                "ec2: изменить атрибут Vpc",
                "ec2:ОписатьАтрибутVpc",
                "ec2:ОписатьVpcs",
                "ec2:Описать подсети"
            ],
            "Ресурс": [
                "*"
            ]
        }
    ]
}

Чтобы воспроизвести:

  • Сохраните приведенный выше текст формирования облака в файл с именем «a-test-stack-template.yaml».
  • Установите временную переменную bash с именем aws_cred_profile с именем профиля учетных данных aws, которое будет использоваться для команд aws cli. Кредиты должны принадлежать пользователю IAM с прикрепленным выше профилем IAM. Используйте значение по умолчанию, если имеется только один набор учетных данных.
aws_cred_profile = по умолчанию
  • Команды AWS CLI для тестирования макета:
aws_region=eu-центральный-1

# aws cli create-stack
test_env=$(aws cloudformation create-stack --region $aws_region --no-cli-pager \
--profile $aws_cred_profile --disable-rollback \
--stack-name test-$(дата +%Y%b%d-%H%M%S) \
--template-body файл://a-test-stack-template.yaml \
| sed -r -e 's/.*:стек\/(.*)\/.*/\1/' | СЭД '1d' | сэд '2д')

эхо $test_env

# повторять вызовы list-stack-resources, пока создание стека не будет завершено
aws cloudformation list-stack-resources --region $aws_region --no-cli-pager \
--stack-name=$test_env --max-items=3

Ответить или комментировать

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