В документации для ресурса aws_security_group
специально указывается, что они по умолчанию намеренно удаляют выходное правило AWS по умолчанию и требуют, чтобы пользователи указали его для ограничения сюрпризов для пользователей:
ПРИМЕЧАНИЕ о выходных правилах. По умолчанию AWS создает выходное правило ALLOW ALL при создании новой группы безопасности внутри VPC.При создании новой группы безопасности внутри VPC Terraform удалит это правило по умолчанию и потребует, чтобы вы специально воссоздали его, если хотите этого правила.Мы считаем, что это приведет к меньшему количеству сюрпризов с точки зрения контроля ваших правил выхода.Если вы хотите, чтобы это правило имело место, вы можете использовать этот выходной блок:
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
Здесь также есть техническая / UX причина в том, что было бы сложно заставить Terraform понять, следует ли емуПри внесении изменений в группу безопасности сохраняйте правило разрешить все выходы.Должно ли оно всегда предусматривать правило разрешения всех выходов, если не указано другое правило выхода, а затем, если это так, удалить значение по умолчанию?Как бы это работало с комбинацией ресурса aws_security_group_rule
?
AWS приняла решение о том, что правило по умолчанию, разрешающее весь исходящий выход, является более приятным для пользователя, чем отсутствие его (и сбивает с толку людей относительно того, почему их экземпляр не может обмениваться исходящими сообщениями) без слишком значительного влияния на безопасность (по сравнению с эквивалентом для входящих).Даже если бы они сейчас передумали в пользу этой выгоды, они не смогли бы сделать это без массового нарушения множества настроек / рабочих процессов людей, что AWS очень неохотно делает.
Terraform, с другой стороныстороны, приняли решение другим путем, и это лучше подходит для инструмента, а также немного улучшило защитную позу инструмента за счет того, чтобы люди определяли повторяющийся выходной блок во многих местах.
ЕслиВы особенно заботитесь о повторении и всегда хотите разрешить весь исходящий трафик, тогда вам может оказаться полезным использовать вместо этого модуль, который автоматически включает правило разрешения всех выходных сообщений.