¿Cuánto tiempo debo esperar después de aplicar una política de AWS IAM antes de que sea válida?


Estoy agregando y eliminando políticas de usuario de AWS IAM mediante programación, y estoy obteniendo 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):

  1. Comience con un usuario que puede leer desde un cubo en particular
  2. Borrar políticas de usuario (listar políticas y luego llamar a "deleteUserPolicy" para cada una)
  3. Espere hasta que el usuario no tenga políticas de usuario (llame a "listUserPolicies" hasta que devuelva un vacío set)
  4. Intentar leer desde el cubo (esto debería fallar)

Si pongo un punto de interrupción entre #3 y #4 y espero unos segundos, el usuario no puede leer desde el cubo, que es lo que espero. Si elimino los puntos de interrupción, el usuario puede leer desde el cubo, lo cual es incorrecto.

(Esto también es inconsistente cuando yo agrego una política y luego acceso 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 manera de obtener un recibo o acuse de recibo 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 políticas?

(Para su información, he copiado mi pregunta de https://forums.aws.amazon.com/thread.jspa?threadID=140383&tstart=0 )

Author: okwap, 2013-11-23

1 answers

La frase "casi inmediatamente" se usa 5 veces en IAM FAQ, 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 consistencia inmediata.

No se si lo has considerado, pero está completamente dentro de los límites de la posibilidad de que en realidad, en el paso 4 en su flow, see a sequence of pass, fail, pass, pass, fail, fail, fail, fail... 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 nuevos objetos son inmeditamente consistentes mientras que las sobrescrituras y las eliminaciones son finalmente consistentes... por lo tanto, el concepto de que una política haya "tenido un efecto" o no en el cubo o en un objeto no es un concepto completamente significativo ya que la aplicación de la política es, en sí, casi con seguridad, un evento distribuido.

Para confirmar dicha aplicación de políticas, AWS tendría que exponer la capacidad de interrogar (al menos indirectamente) a cada entidad que tiene una copia replicada de esa política para ver si tenía 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 un asombroso 2 billones de objetos, y sirve cargas máximas en exceso de 1,1 millones de solicitudes por segundo.

Las respuestas oficiales de AWS a esta publicación en el foro proporcionan más información:

Si bien los cambios que realice en las entidades de IAM se reflejan inmediatamente en las API de IAM, puede tomar un tiempo notable para que la información se refleje globalmente. En la mayoría de los casos, los cambios que realice se reflejan en menos de un minuto. Las condiciones de la red a veces pueden aumentar el retraso, y algunos servicios pueden almacenar en caché cierta información que no es credencial que lleva tiempo expirar y ser reemplazado.

La respuesta que acompañaba a qué hacer mientras tanto era "inténtalo de nuevo."

Recomendamos un bucle de reintentos después de un ligero retraso inicial, ya que en la mayoría de las circunstancias verá sus cambios reflejados 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.

Supervisamos activamente el rendimiento del sistema de replicación. Pero como S3, garantizamos solo la consistencia eventual, no cualquier límite superior en particular.

 30
Author: Michael - sqlbot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-02 12:12:54