У меня есть сервер, работающий за пределами AWS, и я написал небольшой скрипт для регулярной загрузки файлов с этого сервера в корзину S3. Моим первым подходом к аутентификации было создание пользователя IAM, сохранение его ключа доступа и секрета на сервере и аутентификация с его помощью на AWS. Я читал, что AWS не рекомендует использовать долгосрочные учетные данные, вместо этого следует использовать роль IAM. Однако в официальной документации используется исходный профиль «user1». Затем этот пользователь принимает на себя роль «маркетингового администратора». Но как мне аутентифицировать пользователя user1? Я полагаю, с долгосрочными полномочиями? Итак, в чем же польза от использования предполагаемой роли?
Мой сценарий запускается автоматически как системная служба, поэтому я не могу использовать единый вход с другим поставщиком удостоверений.
Как лучше всего использовать aws-cli, boto3 и т. д. и безопасно проходить аутентификацию в AWS?
Ключевым моментом здесь является то, что вам нужен долгосрочный доступ к сервису aws. Я думаю, вы можете создать пользователя IAM с минимальными необходимыми разрешениями, затем сгенерировать ключи доступа для этого пользователя и использовать эти ключи доступа с внешнего сервера для доступа к сервису aws, в данном случае s3. Я думаю, что это решение с наименьшими затратами на операции.
Я не рекомендую ключи долгосрочного доступа, вам следует их ротировать и хорошо защищать на своем сервере.
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html?icmpid=docs_iam_console
Исторически вы правы. Типичным решением было создание роли IAM с необходимыми разрешениями S3, а затем пользователя IAM, единственным разрешением которого было взять на себя вышеупомянутую роль. Таким образом, преимущество заключалось в том, что учетные данные AWS, используемые для операций S3, были ограничены по времени, поэтому в случае их утечки существовал меньший интервал времени, в течение которого их можно было использовать.
Теперь вам следует рассмотреть возможность использования IAM Roles Anywhere:
Вы можете использовать AWS Identity and Access Management Roles Anywhere для получения временных учетных данных безопасности в IAM для таких рабочих нагрузок, как серверы, контейнеры и приложения, которые работают за пределами AWS. Ваши рабочие нагрузки могут использовать те же политики IAM и роли IAM, которые вы используете с приложениями AWS для доступа к ресурсам AWS. Использование IAM Roles Anywhere означает, что вам не нужно управлять долгосрочными учетными данными для рабочих нагрузок, выполняемых за пределами AWS.