AWS IAM — Как запретить пользователям вносить изменения через консоль, но разрешить изменения API через CLI

#amazon-iam

#amazon-iam

Вопрос:

Для Amazon Webservices IAM есть ли способ, с помощью которого я могу создать роль с некоторыми политиками, которые разрешают чтение только в консоли, но разрешают чтение / запись с использованием API / CLI / Terraform.

Цель состоит в том, чтобы принудительно использовать инфраструктуру как код, чтобы избежать смещения конфигурации.

Любые идеи или ссылки на лучшие практики очень приветствуются.

Ответ №1:

Важно четко понимать, что надежного способа сделать это не существует. Ни одна система никогда не может быть уверена, как был сделан запрос на стороне клиента.

При этом должен быть способ достичь того, что вы ищете. Вы захотите использовать условие IAM aws:UserAgent (документы здесь), чтобы запретить пользователям использовать браузер. Вот пример:

 {
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    },
    {
      "Effect": "Deny",
      "Action": "*",
      "Resource": "*"
      "Condition": {
          "StringLike": {
              "aws:UserAgent": "console.amazonaws.com"
          }
       }
    }
  ]
}
  

CloudTrail регистрирует пользовательские агенты для запросов, чтобы вы могли использовать это, чтобы выяснить, какие пользовательские агенты блокировать. (документы здесь)