SWFIAMPolíticas de Amazon - Amazon Simple Workflow Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

SWFIAMPolíticas de Amazon

Una IAM política contiene uno o más Statement elementos, cada uno de los cuales contiene un conjunto de elementos que definen la política. Para obtener una lista completa de los elementos y un análisis general acerca de cómo crear políticas, consulte El lenguaje de la política de acceso. El control de SWF acceso de Amazon se basa en los siguientes elementos:

Efecto

(Obligatorio) El efecto de la instrucción: deny o allow.

nota

Debes permitir el acceso de forma explícita; IAM deniega el acceso de forma predeterminada.

Recurso

(Obligatorio) El recurso (una entidad de un AWS servicio con la que el usuario puede interactuar) al que se aplica la declaración.

Solo puede expresar los permisos a nivel de recursos para los dominios. Por ejemplo, una política puede permitir acceder solo a determinados dominios en su cuenta. Para expresar los permisos de un dominio, Resource establézcalo en el Amazon Resource Name (ARN) del dominio, que tiene el formato «arn:aws:swf:Region:AccountID:/domain/DomainName". Region es la región, AWS AccountID es el identificador de la cuenta sin guiones, y DomainName es el nombre de dominio.

Acción

(Obligatoria) La acción a la que se aplica la declaración, a la que se hace referencia mediante el siguiente formato: serviceId:action. Para AmazonSWF, establece serviceID paraswf. Por ejemplo, swf:StartWorkflowExecution hace referencia a la StartWorkflowExecutionacción y se utiliza para controlar qué usuarios pueden iniciar flujos de trabajo.

Si concedes permiso de uso RespondDecisionTaskCompleted, también puedes controlar el acceso a la lista de decisiones incluida Action para expresar los permisos del seudoAPI. Como IAM deniega el acceso de forma predeterminada, la decisión del decisor debe estar permitida de forma explícita o no se aceptará. Puede utilizar un valor * para permitir todas las decisiones.

Condición

(Opcional) Expresa una restricción en uno o más parámetros de una acción, que limitan los valores permitidos.

SWFLas acciones de Amazon suelen tener un amplio alcance, que puedes reducir mediante el uso de IAM condiciones. Por ejemplo, para limitar las listas de tareas a las que puede acceder la PollForActivityTaskacción, debes incluir una Condition y utilizar la swf:taskList.name clave para especificar las listas permitidas.

Puede expresar restricciones para las siguientes entidades:

  • El tipo de flujo de trabajo. El nombre y la versión tienen claves independientes.

  • El tipo de actividad. El nombre y la versión tienen claves independientes.

  • Las listas de tareas.

  • Tags. Puede especificar varias etiquetas para algunas acciones. En ese caso, cada etiqueta tiene una clave distinta.

nota

En AmazonSWF, todos los valores son cadenas, por lo que se restringe un parámetro mediante un operador de cadena comoStringEquals, por ejemplo, que restringe el parámetro a una cadena específica. Sin embargo, los operadores de comparación de la cadena regulares como StringEquals requieren que todas las solicitudes incluyan el parámetro. Si no incluye el parámetro de forma explícita, y no hay un valor predeterminado como la lista de tareas predeterminada provista durante el registro del tipo, se denegará el acceso.

A menudo es útil tratar las condiciones como si fueran opcionales. De este modo, puede llamar a una acción sin incluir necesariamente el parámetro asociado. Por ejemplo, es posible que desee permitir que un decisor especifique un conjunto de RespondDecisionTaskCompleteddecisiones, pero también permitir que especifique solo una de ellas para una llamada determinada. En ese caso, puede limitar los parámetros pertinentes con un operador StringEqualsIfExists, a fin de permitir el acceso si el parámetro satisface la condición, pero sin denegar el acceso si el parámetro está ausente.

Para obtener una lista completa de los parámetros que puede limitar y las claves asociadas, consulte APIResumen.

En la siguiente sección se proporcionan ejemplos de cómo elaborar SWF las políticas de Amazon. Para obtener más información, consulte Condiciones de la cadena.

Ejemplos de SWF políticas de Amazon

Un flujo de trabajo consta de varios actores: actividades, decisores, etc. Puede controlar el acceso de cada actor adjuntando una IAM política adecuada. En esta sección se presentan algunos ejemplos. A continuación se muestra el caso más sencillo:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/*" } ] }

Si adjunta esta política a un actor, este tiene acceso completo a la cuenta en todas las regiones. Puede utilizar comodines para que un solo valor represente varios recursos, acciones o regiones.

  • El primer comodín (*) en el valor Resource indica que los permisos del recurso se aplican a todas las regiones. Para limitar los permisos a una sola región, sustituya el comodín por la cadena de región apropiada, como us-east-1.

  • El segundo comodín (*) en el valor Resource permite al actor acceder a todos los dominios en las regiones especificadas.

  • El comodín (*) en el Action valor permite al actor convocar cualquier SWF acción de Amazon.

Para obtener más información sobre el uso de los comodines, consulte Descripciones de elementos

La siguiente sección proporciona ejemplos de políticas que conceden permisos de una forma más precisa.

Permisos de dominio

Si quiere limitar los flujos de trabajo del departamento a un dominio particular, puede usar algo así:

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1" } ] }

Si adjunta esta política a un actor, este puede llamar a cualquier acción pero solo para el dominio del department1.

Si quiere que un actor tenga acceso a más de un dominio, puede expresar permisos para cada dominio por separado, como sigue:

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1" }, { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department2" } ] }

Si adjuntas esta política a un actor, este podrá utilizar cualquier SWF acción de Amazon en los department2 dominios department1 y. También puede utilizar comodines en ocasiones para representar varios dominios.

APIPermisos y restricciones

Puede controlar qué acciones puede utilizar un actor con el elemento Action. Opcionalmente, puede restringir los valores de los parámetros permitidos de la acción por medio del elemento Condition.

Si quiere limitar el acceso de un actor a solo ciertas acciones, puede utilizar un código parecido al siguiente:

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/department2" } ] }

Si adjunta esta política a un actor, este puede llamar a StartWorkflowExecution para comenzar los flujos de trabajo en el dominio department2. No puede usar ninguna otra acción ni comenzar flujos de trabajo en otros dominios.

Para limitar aún más los flujos de trabajo que puede comenzar un actor, limite uno o varios valores del parámetro StartWorkflowExecution, como sigue:

{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1", "Condition" : { "StringEquals" : { "swf:workflowType.name" : "workflow1", "swf:workflowType.version" : "version2" } } } ] }

Esta política limita los parámetros name y version de la acción StartWorkflowExecution. Si adjunta la política a un actor, este solo puede ejecutar la version2 del workflow1 en el dominio department1 y ambos parámetros deben estar incluidos en la solicitud.

Para limitar un parámetro sin tener que incluirlo en una solicitud, utilice un operador StringEqualsIfExists, como sigue:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:taskList.name" : "task_list_name" } } } ] }

Esta política permite a un actor especificar opcionalmente una lista de tareas al comenzar la ejecución de un flujo de trabajo.

Puede limitar la lista de etiquetas para algunas acciones. En ese caso, cada etiqueta tiene un clave distinta. Utilice swf:tagList.member.0 para limitar la primera etiqueta de la lista, swf:tagList.member.1 para limitar la segunda, y así sucesivamente, hasta un máximo de 5. Sin embargo, tenga cuidado con el método que elija para limitar las listas de etiquetas. Este es un ejemplo de una política que no se recomienda:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" } } } ] }

Esta política le permite especificar opcionalmente some_ok_tag o another_ok_tag. Sin embargo, esta política limita solo el primer elemento de la lista. Esta lista puede incluir elementos adicionales con valores arbitrarios que estarán todos permitidos porque esta política no aplica ninguna condición a swf:tagList.member.1, swf:tagList.member.2, etc.

Una forma de resolver este problema es no permitir la utilización de listas de etiquetas. La siguiente política asegura que solo se permitan some_ok_tag o another_ok_tag al exigir que la lista tenga solo un elemento.

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/some_domain", "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" }, "Null" : { "swf:tagList.member.1" : "true" } } } ] }

APIPseudopermisos y restricciones

Si quiere limitar las decisiones a disposición de RespondDecisionTaskCompleted, en primer lugar, tiene que permitir que el actor llame a RespondDecisionTaskCompleted. A continuación, puede expresar los permisos para los API pseudomiembros correspondientes utilizando la misma sintaxis que para los miembros normalesAPI, de la siguiente manera:

{ "Version": "2012-10-17", "Statement" : [ { "Resource" : "arn:aws:swf:*:123456789012:/domain/*", "Action" : "swf:RespondDecisionTaskCompleted", "Effect" : "Allow" }, { "Resource" : "*", "Action" : "swf:ScheduleActivityTask", "Effect" : "Allow", "Condition" : { "StringEquals" : { "swf:activityType.name" : "SomeActivityType" } } } ] }

Si adjunta esta política a un actor, el primer elemento Statement permite al actor llamar a RespondDecisionTaskCompleted. El segundo elemento permite al actor utilizar la ScheduleActivityTask decisión de ordenar SWF a Amazon que programe una tarea de actividad. Para permitir todas las decisiones, sustituya «swf:ScheduleActivityTask" por «swf: *».

Puede utilizar los operadores de condición para restringir los parámetros igual que con los operadores normales. API El operador StringEquals en esta Condition permite y obliga a RespondDecisionTaskCompleted a programar una tarea de actividad para la actividad SomeActivityType. Si quiere permitir que RespondDecisionTaskCompleted utilice un valor de parámetro pero sin que sea obligatorio, utilice el operador StringEqualsIfExists.

AWS política gestionada: SimpleWorkflowFullAccess

Puede adjuntar la SimpleWorkflowFullAccess política a sus IAM identidades.

Esta política proporciona acceso completo al servicio de SWF configuración de Amazon.

Detalles del permiso

Esta política incluye los siguientes permisos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "swf:*" ], "Resource": "*" } ] }

Limitaciones del modelo de servicio de las políticas de IAM

Debe tener en cuenta las limitaciones del modelo de servicio al crear IAM políticas. Es posible crear una IAM política sintácticamente válida que represente una SWF solicitud de Amazon no válida; una solicitud que esté permitida en términos de control de acceso puede seguir fallando porque no es válida.

Por ejemplo, la siguiente política de ListOpenWorkflowExecutions no se recomienda:

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:ListOpenWorkflowExecutions", "Resource" : "arn:aws:swf:*:123456789012:/domain/domain_name", "Condition" : { "StringEquals" : { "swf:typeFilter.name" : "workflow_name", "swf:typeFilter.version" : "workflow_version", "swf:tagFilter.tag" : "some_tag" } } } ] }

El modelo SWF de servicio de Amazon no permite utilizar tagFilter los parámetros typeFilter and en la misma ListOpenWorkflowExecutions solicitud. Por lo tanto, la política permite las llamadas que el servicio rechace (mediante el lanzamiento de ValidationException) por considerarlas solicitudes no válidas.