Документ политики корзины Terraform AWS, ARN изменяется

У меня странная проблема, когда в какой-то момент меняются ARN. Это происходит как для политики корзины, так и для политики ключа KMS.

В документе политики я указываю ролевые ARN во внешней учетной записи:

...
principals {
  type        = "AWS"
  identifiers = var.list_of_arns
}
...

Результат плана терраформирования выглядит нормально:

Principal = {
  AWS = [
    "arn:aws:iam::account-id:role/role1",
    "arn:aws:iam::account-id:role/role2",
  ]
}

Однако фактические ресурсы, которые создаются, разные.

{
  "Statement": [
  ...
  "Principal": {
    "AWS": [
      "SOMESTRINGOF21CHARS",
      "OTHERSTRINGOF21CHARS"
    ]
  }
  ..
}

Почему это происходит?

Спасибо


person euhn    schedule 26.06.2020    source источник
comment
Было бы неплохо получить полный минимально воспроизводимый пример.   -  person Helder Sepulveda    schedule 26.06.2020


Ответы (1)


Похоже, что terraform / aws заменяет удобный ARN эквивалентным идентификатором. Из документации AWS:

Когда IAM создает пользователя, группу, роль, политику, профиль экземпляра или сертификат сервера, он присваивает каждой сущности уникальный идентификатор, который выглядит следующим образом:

AIDAJQABLZS4A3QDU576Q

По большей части вы используете понятные имена и ARN при работе с объектами IAM. Таким образом, вам не нужно знать уникальный идентификатор для конкретной сущности. Однако уникальный идентификатор иногда может быть полезен, когда использование понятных имен нецелесообразно.

Один из примеров касается повторного использования понятных имен в вашей учетной записи AWS. В вашей учетной записи понятное имя пользователя, группы или политики должно быть уникальным. Например, вы можете создать пользователя IAM по имени Дэвид. Ваша компания использует Amazon S3 и имеет корзину с папками для каждого сотрудника. У корзины есть политика на основе ресурсов (политика корзины), которая позволяет пользователям получать доступ только к своим собственным папкам в корзине. Предположим, что сотрудник по имени Дэвид покидает вашу компанию, а вы удаляете соответствующего пользователя IAM. Но позже начинает работать другой сотрудник по имени Дэвид, и вы создаете нового пользователя IAM по имени Дэвид. Если политика корзины указывает пользователя IAM Дэвида, политика позволяет новому Дэвиду получать доступ к информации, оставленной прежним Дэвидом.

Однако каждый пользователь IAM имеет уникальный идентификатор, даже если вы создаете нового пользователя IAM, который повторно использует понятное имя, которое вы удалили ранее. В этом примере старый пользователь IAM Дэвид и новый пользователь IAM Дэвид имеют разные уникальные идентификаторы. Вы можете создавать политики ресурсов для корзин Amazon S3, которые предоставляют доступ по уникальному идентификатору, а не только по имени пользователя. Это снижает вероятность непреднамеренного предоставления доступа к информации, которой у сотрудника не должно быть.

person toolkit    schedule 26.06.2020