Quiero saber las mejores prácticas utilizadas por las grandes empresas para el acceso programático a múltiples servicios de AWS, ya que hay varios programas que necesitan acceso a dos servicios diferentes, entonces, ¿cómo se administra? ¿Crearon múltiples claves de acceso para cada programa para 2 servicios diferentes o crearon una única para tener acceso a todos los servicios?
Respuesta1
La mejor práctica para recursos de AWS como EC2/Lambda/etc. es utilizar roles de IAM, detalladosaquí. En resumen, no crea un usuario para un servidor, crea una función que el servicio puede asumir y que tiene un conjunto de permisos asociados con el servidor EC2.
Ese servidor con una función recibe credenciales "temporales" cuando se está ejecutando para que pueda acceder a cualquier servicio que permita la función IAM. Cuando digo "temporales", las credenciales otorgadas al servicio duran poco, tal vez 24 horas, pero cuando caducan se emiten nuevas credenciales. Esto suele ser transparente, a menos que esté escribiendo un software que los utilice, en cuyo caso deberá comprobarlos de vez en cuando. Puede que no tenga los detalles finos allí, pero es más o menos correcto.
AWS tiene políticas predefinidas que pueden facilitar la definición de roles.
Por ejemplo, puede definir una función que diga "Los servidores EC2 con esta función pueden enviar a SQS, extraer de SQS, ejecutar esta función lambda" y se deniega cualquier cosa que no se otorgue explícitamente. A veces es necesario un poco de experimentación para obtener los permisos que necesita. Lo mejor es tener privilegios mínimos, de modo que si un recurso como el servidor EC2 se ve comprometido, no tiene derechos de administrador en AWS y no puede eliminar todo ni decir iniciar la minería criptográfica.
Si trabaja en una gran empresa que realiza trabajos en AWS, le sugiero que obtenga capacitación en AWS. La capacitación en línea para AWS Architect Associate con un lugar como Cloud Guru es lo mínimo que necesita. AWS es complejo. He trabajado en AWS a tiempo completo durante años, pero aprendo algo nuevo todos los días.
Respuesta2
En primer lugar, necesita políticas de acceso predefinidas a los recursos (como SQS, EC2, ElastiCache, etc.). Después de eso, puede agregar un usuario con acceso programático y almacenar la credencial de manera segura o usar Roles para asignarla a los servicios para el acceso. Por ejemplo: cree una función de IAM para acceder a RDS y asígnela a la instancia ec2, luego intente acceder a nuestra base de datos desde la instancia ec2.