amazon web services - servicios - ¿Cuánto tiempo debo esperar después de aplicar una política AWS IAM antes de que sea válida?
la nube de amazon (1)
La frase "casi de inmediato" se usa 5 veces en las preguntas frecuentes de IAM , y es, por supuesto, algo subjetiva.
Dado que AWS es un sistema distribuido globalmente, sus cambios tienen que propagarse, y el sistema en su conjunto parece estar diseñado para favorecer la disponibilidad y la tolerancia de partición en lugar de la coherencia inmediata.
No sé si lo has considerado, pero está totalmente dentro de los límites de la posibilidad de que, en el paso 4 de tu flujo, puedas ver una secuencia de pase, falla, pase, pase, falla, falla, falla, fallar ... porque ni un cubo ni un objeto en un cubo son en realidad una sola cosa en un solo lugar, como lo demuestra el modelo de consistencia mixta de diferentes acciones en S3, donde los objetos nuevos son consistentes de manera inmediata mientras que las sobrescrituras y eliminaciones son eventualmente consistente ... por lo que el concepto de una política que "tuvo un efecto" o no sobre el cubo o un objeto no es un concepto totalmente significativo ya que la aplicación de la política es, casi con seguridad, un evento distribuido.
Para confirmar dicha aplicación de políticas, AWS debería exponer la capacidad de (al menos indirectamente) interrogar a todas las entidades que tienen una copia replicada de esa política para ver si tenían la versión actual o no ... lo que sería potencialmente poco práctico o difícil de manejar, por decir lo menos, en un sistema tan masivo como S3, que ha crecido más allá de los asombrosos 2 billones de objetos, y atiende cargas pico superiores a 1.1 millones de solicitudes por segundo .
Las respuestas oficiales de AWS a esta publicación en el foro brindan más información:
Si bien los cambios que realiza en las entidades de IAM se reflejan en las API de IAM de inmediato, puede tomar un tiempo notable para que la información se refleje globalmente. En la mayoría de los casos, los cambios que realiza se reflejan en menos de un minuto. Las condiciones de la red a veces pueden aumentar la demora, y algunos servicios pueden almacenar en caché cierta información que no es de credenciales y que toma tiempo caducar y ser reemplazada.
La respuesta que acompaña a lo que se debe hacer mientras tanto es "intentar de nuevo".
Recomendamos un ciclo de reintento después de un ligero retraso inicial, ya que en la mayoría de los casos verá reflejados sus cambios con bastante rapidez. Si duerme, su código estará esperando demasiado tiempo en la mayoría de los casos, y posiblemente no lo suficiente para las raras excepciones.
Controlamos activamente el rendimiento del sistema de replicación. Pero al igual que S3, garantizamos solo consistencia eventual, no un límite superior particular.
Estoy agregando y eliminando las políticas de usuario de AWS IAM programáticamente, y obtengo resultados inconsistentes de la aplicación de esas políticas.
Por ejemplo, esto puede o no tener éxito (estoy usando el SDK de Java 1.6.6):
- Comience con un usuario que pueda leer desde un cubo en particular
- Borrar las políticas del usuario (enumerar las políticas y luego llamar a "deleteUserPolicy" para cada una)
- Espere hasta que el usuario no tenga políticas de usuario (llame a "listUserPolicies" hasta que devuelva un conjunto vacío)
- Intenta leer del cubo (esto debería fallar)
Si pongo un punto de corte entre # 3 y # 4 y espero unos segundos, el usuario no puede leer del cubo, que es lo que espero. Si elimino los puntos de interrupción, el usuario puede leer del cubo, lo cual es incorrecto.
(Esto también es inconsistente cuando agrego una política y luego accedo a un recurso)
Me gustaría saber cuándo un cambio de política ha tenido un efecto en el componente (S3, SQS, etc.), no solo en el sistema IAM. ¿Hay alguna forma de obtener un recibo o reconocimiento de esto? ¿O tal vez hay una cierta cantidad de tiempo para esperar?
¿Hay alguna documentación sobre los aspectos internos de la aplicación de la política?
(FYI he copiado mi pregunta de https://forums.aws.amazon.com/thread.jspa?threadID=140383&tstart=0 )