AWS учетные данные для httpd / apache отличаются от установленных для ec2-пользователя - PullRequest
0 голосов
/ 27 апреля 2020

Как заставить httpd / apache использовать указанные c access_key, secret_key и region?

Я использовал aws configure для установки учетных данных по умолчанию для экземпляр EC2 с пользователем по умолчанию ec2. Я могу успешно получить их, используя aws configure list, и могу успешно звонить на такие вещи, как aws s3api при входе через s sh от имени пользователя ec2.

Я использую apache как httpd в рассматриваемом случае. Когда я пытаюсь позвонить из веб-приложения, например, используя php $output = shell_exec('aws s3api Example-Commands --output text 2>&1');, я получаю сообщение об ошибке 403 Запрещено. Если я запускаю $output = shell_exec('aws configure list --output text 2>&1');, то вижу, что access_key и secret_key не те, которые я предоставил, используя aws configure. Если я вместо этого запускаю эти команды из S SH при входе в систему как пользователь ec2, они работают.

httpd, кажется, работает как пользователь "apache" при использовании

[ec2-user@ip-172-26-0-172 ~]$ ps aux | egrep '(apache|httpd)'
root      7425  0.0  0.3 4***76 2***6 ?        Ss   Apr15   1:39 /usr/sbin/httpd
apache    9074  0.3  1.0 5***16 8***8 ?        Sl   22:45   0:01 /usr/sbin/httpd
apache    9075  0.0  0.2 4***20 1***0 ?        Sl   22:45   0:00 /usr/sbin/httpd
apache    9081  0.2  0.8 5***04 6***6 ?        Sl   22:45   0:00 /usr/sbin/httpd

nano ~/.aws/credentials показывает учетные данные, которые я ранее вводил.

Я хочу, чтобы httpd использовал учетные данные, которые я ранее предоставил для aws конфигурации, но я не уверен, как это сделать.

1 Ответ

1 голос
/ 27 апреля 2020

На основе комментариев было решено использовать environment variables, чтобы Apache мог получить доступ к учетным данным.

Тем не менее, следует отметить, что жесткое кодирование учетных данных в экземпляре не является хорошей практикой . Рекомендуемый способ - присоединить роль IAM к существующему экземпляру Amazon EC2 :

Роли IAM позволяют вашим приложениям, работающим в EC2, использовать временные учетные данные безопасности, которые создает AWS, распределяет и вращается автоматически. Использование временных учетных данных снижает риск долгосрочной компрометации ключа.

...