Ресурс aws_iam_policy_attachment имеет следующее предупреждение
ПРЕДУПРЕЖДЕНИЕ. Ресурс aws_iam_policy_attachment
создает эксклюзивные вложения политик IAM. Для всей учетной записи AWS все пользователи / роли / группы, к которым привязана одна политика, должны быть объявлены одним ресурсом aws_iam_policy_attachment
. Это означает, что даже у любых пользователей / ролей / групп, которые имеют прикрепленную политику через любой другой механизм (включая другие ресурсы Terraform), эта присоединенная политика будет отозвана этим ресурсом. Вместо этого рассмотрим aws_iam_role_policy_attachment
, aws_iam_user_policy_attachment
или aws_iam_group_policy_attachment
. Эти ресурсы не обеспечивают принудительное вложение политики IAM.
Мы изменили часть нашего кода с
resource "aws_iam_policy_attachment" "logs" {
name = "${var.function_name}-logs"
roles = [aws_iam_role.lambda.name]
policy_arn = aws_iam_policy.logs[0].arn
}
на
resource "aws_iam_role_policy_attachment" "logs" {
name = "${var.function_name}-logs"
role = aws_iam_role.lambda.name
policy_arn = aws_iam_policy.logs[0].arn
}
Изменение выше это просто, но теперь terraform хочет удалить ресурс aws_iam_policy_attachment
и добавить aws_iam_role_policy_attachment
. Ранее, когда мы применили terraform к модулю, использующему общий управляемый ресурс IAM, он отделил политику от 30 различных ролей IAM, заставив нас повторно присоединить их, найдя и применив наши модули terraform.
Что такое безопасный стратегия использования менее опасного ресурса aws_iam_role_policy_attachment
?
Наша текущая стратегия
- Воссоздание управляемой политики IAM в качестве встроенной политики и добавление к роли
- Удаление управляемого политика вручную с использованием AWS console
- Возможно, проще с CLI, но это кажется более безопасным
- Удаление плохого ресурса из состояния
- Может быть необязательно поскольку оно было удалено на предыдущем шаге
terraform state rm aws_iam_policy_attachment.logs
- Цель - применить новое вложение
target apply -target aws_iam_role_policy_attachment.logs
- Проверка работоспособности