SWFIAMPolitiques d'Amazon - Amazon Simple Workflow Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

SWFIAMPolitiques d'Amazon

Une IAM politique contient un ou plusieurs Statement éléments, dont chacun contient un ensemble d'éléments qui définissent la stratégie. Pour une liste complète des éléments et une discussion générale sur la façon de créer des politiques, voir The Access Policy Language. Le contrôle SWF d'accès Amazon repose sur les éléments suivants :

Effet

[Obligatoire] L'effet de l'instruction : deny ou allow.

Note

Vous devez autoriser explicitement l'accès ; IAM refuse l'accès par défaut.

Ressource

(Obligatoire) La ressource, c'est-à-dire une entité d'un AWS service avec laquelle un utilisateur peut interagir, à laquelle s'applique l'instruction.

Vous pouvez uniquement exprimer des autorisations de ressources pour les domaines. Par exemple, une stratégie peut autoriser l'accès à seulement certains domaines de votre compte. Pour exprimer des autorisations pour un domaine, définissez le nom Resource de ressource Amazon du domaine (ARN), au format « arn:aws:swf :Region:AccountID:/domain/DomainName". Region c'est la AWS région, AccountID est l'identifiant du compte sans tiret, et DomainName est le nom de domaine.

Action

(Obligatoire) L'action à laquelle s'applique la déclaration, à laquelle vous faites référence en utilisant le format suivant : serviceId:action. Pour AmazonSWF, définissez serviceID àswf. Par exemple, swf:StartWorkflowExecution fait référence à l'StartWorkflowExecutionaction et est utilisé pour contrôler quels utilisateurs sont autorisés à démarrer des flux de travail.

Si vous accordez l'autorisation d'utilisation RespondDecisionTaskCompleted, vous pouvez également contrôler l'accès à la liste de décisions incluse en utilisant Action pour exprimer des autorisations pour le pseudoAPI. Comme IAM l'accès est refusé par défaut, la décision d'un décideur doit être explicitement autorisée, sinon elle ne sera pas acceptée. Vous pouvez utiliser la valeur * pour autoriser toutes les décisions.

Condition

(Facultatif) Exprime une contrainte au niveau d'un ou de plusieurs paramètres d'action, ce qui limite les valeurs acceptées.

SWFLes actions d'Amazon ont souvent une large portée, que vous pouvez réduire en utilisant IAM des conditions. Par exemple, pour limiter les listes de tâches auxquelles l'PollForActivityTaskaction est autorisée à accéder, vous devez inclure un Condition et utiliser la swf:taskList.name clé pour spécifier les listes autorisées.

Vous pouvez exprimer des contraintes pour les entités suivantes.

  • Le type de flux de travail Le nom et la version ont des clés distinctes.

  • Le type d'activité. Le nom et la version ont des clés distinctes.

  • Les listes de tâches.

  • Balises. Vous pouvez spécifier plusieurs balises pour certaines actions. Dans ce cas, chaque balise possède une clé distincte.

Note

Pour AmazonSWF, les valeurs sont toutes des chaînes. Vous pouvez donc contraindre un paramètre à l'aide d'un opérateur de chaîne tel queStringEquals, qui limite le paramètre à une chaîne spécifiée. Toutefois, avec les opérateurs de comparaison de chaîne habituels comme StringEquals, toutes les requête doivent inclure le paramètre. Si vous n'incluez pas le paramètre explicitement et s'il n'existe aucune valeur par défaut, telle que la liste de tâches par défaut fournie lors de l'enregistrement du type, l'accès est refusé.

Il est souvent utile de traiter les conditions comme étant facultatives. De la sorte, vous pouvez appeler une action sans être obligé d'inclure le paramètre associé. Par exemple, vous pouvez autoriser un décideur à spécifier un ensemble de RespondDecisionTaskCompleteddécisions, mais également à n'en spécifier qu'une pour un appel en particulier. Dans ce cas, utilisez un opérateur StringEqualsIfExists pour limiter les paramètres appropriés, afin d'autoriser l'accès si le paramètre satisfait à la condition, sans toutefois refuser l'accès si le paramètre est absent.

Pour obtenir une liste complète des paramètres que vous pouvez restreindre et des clés associées, consultez la section APIRésumé.

La section suivante fournit des exemples de la manière de créer des SWF politiques Amazon. Pour plus d'informations, consultez la section Conditions de chaîne.

Exemples SWF de politiques Amazon

Un flux de travail est composé de plusieurs acteurs : activités, décideurs, etc. Vous pouvez contrôler l'accès de chaque acteur en joignant une IAM politique appropriée. Cette section fournit quelques exemples. L'exemple suivant illustre le cas le plus simple :

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

Si vous associez cette stratégie à un acteur, celui-ci reçoit l'accès complet au compte dans toutes les régions. Vous pouvez utiliser des caractères génériques de sorte qu'une valeur unique représente plusieurs ressources, actions ou régions.

  • Le premier caractère générique (*) dans la valeur Resource indique que les autorisations de ressources s'applique à toutes les régions. Pour limiter les autorisations à une seule région, remplacez le caractère générique par la chaîne de région appropriée, telle que us-east-1.

  • Le deuxième caractère générique (*) dans la valeur Resource permet à l'acteur d'accéder à tous les domaines du compte dans les régions spécifiées.

  • Le caractère générique (*) contenu dans la Action valeur permet à l'acteur d'appeler n'importe quelle SWF action Amazon.

Pour plus d'informations sur la façon d'utiliser les caractères génériques, consultez la page Descriptions d'élément.

Les sections suivantes présentent des exemples de stratégies qui accordent des autorisations d'une façon plus précise.

Autorisations de domaine

Si vous souhaitez limiter les flux de travail d'un service à un domaine particulier, vous pouvez utiliser un code similaire à celui-ci :

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

Si vous associez cette stratégie à un acteur, celui-ci peut appeler n'importe quelle action, mais seulement pour le domaine department1.

Si vous souhaitez permettre à un acteur d'accéder à plus d'un domaine, vous pouvez exprimer cette autorisation pour chaque domaine séparément, comme suit :

{ "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 vous associez cette politique à un acteur, celui-ci peut utiliser n'importe quelle SWF action Amazon dans les department2 domaines department1 et. Vous pouvez aussi parfois utiliser des caractères génériques pour représenter plusieurs domaines.

APIAutorisations et contraintes

L'élément Action vous permet de contrôler les actions qu'un acteur peut utiliser. Le cas échéant, vous pouvez limiter les paramètres autorisés de cette action via un élément Condition.

Si vous souhaitez restreindre l'accès de l'acteur à seulement certaines actions, vous pouvez utiliser un code similaire à celui-ci :

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

Si vous associez cette stratégie à un acteur, celui-ci peut appeler StartWorkflowExecution pour lancer les flux de travail dans le domaine department2. Il ne peut pas utiliser les autres actions ni lancer les flux de travail dans les autres domaines.

Pour restreindre davantage les flux de travail qu'un acteur peut lancer, limitez une ou plusieurs des valeurs de paramètre StartWorkflowExecution, comme suit :

{ "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" } } } ] }

Cette stratégie contraint les paramètres name et version de l'action StartWorkflowExecution. Si vous associez cette stratégie à un acteur, celui-ci peut uniquement exécuter la version2 de workflow1 dans le domaine department1, et les deux paramètres doivent figurer dans la demande.

Pour limiter un paramètre sans nécessiter sa présence dans une requête, utilisez un opérateur StringEqualsIfExists, comme suit :

{ "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" } } } ] }

Cette stratégie permet à un acteur de choisir de spécifier une liste des tâches lors du démarrage d'une exécution de flux de travail.

Vous pouvez limiter la liste des balises pour certaines actions. Dans ce cas, chaque balise dispose d'une clé séparée. Dès lors, vous utilisez swf:tagList.member.0 pour limiter la première balise de la liste, swf:tagList.member.1 pour limiter la seconde, et ainsi de suite, jusqu'à un maximum de 5. Cependant, vous devez être prudent avec la méthode que vous utilisez pour limiter les listes de balises. Voici un exemple de stratégie non recommandée :

{ "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" } } } ] }

Cette stratégie vous permet de spécifier soit une balise some_ok_tag, soit une balise another_ok_tag. Toutefois, elle limite uniquement le premier élément de la liste de balises. La liste pourrait contenir des éléments supplémentaires avec des valeurs arbitraires qui seraient toutes autorisées, car cette stratégie n'applique aucune condition à swf:tagList.member.1, swf:tagList.member.2, etc.

Une solution à ce problème consiste à interdire l'utilisation de listes de balises. La stratégie suivante garantit que seulement some_ok_tag ou another_ok_tag sont autorisés en imposant un seul élément dans la liste.

{ "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" } } } ] }

APIPseudo-autorisations et contraintes

Si vous souhaitez limiter les décisions accessibles à RespondDecisionTaskCompleted, vous devez tout d'abord autoriser l'acteur à appeler RespondDecisionTaskCompleted. Vous pouvez ensuite exprimer des autorisations pour les API pseudo-membres appropriés en utilisant la même syntaxe que pour le pseudo normalAPI, comme suit :

{ "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 vous associez cette stratégie à un acteur, le premier élément Statement permet à l'acteur d'appeler RespondDecisionTaskCompleted. Le deuxième élément permet à l'acteur d'utiliser la ScheduleActivityTask décision de demander SWF à Amazon de planifier une tâche d'activité. Pour autoriser toutes les décisions, remplacez « swf : ScheduleActivityTask » par « swf : * ».

Vous pouvez utiliser les opérateurs de condition pour contraindre les paramètres comme vous le feriez avec les opérateurs classiquesAPI. L'opérateur StringEquals de cette Condition autorise et oblige RespondDecisionTaskCompleted à planifier une tâche d'activité pour l'activité SomeActivityType. Si vous voulez autoriser RespondDecisionTaskCompleted à utiliser une valeur de paramètre sans qu'elle ne soit obligatoire, vous pouvez utiliser l'opérateur StringEqualsIfExists à la place.

AWS politique gérée : SimpleWorkflowFullAccess

Vous pouvez associer la SimpleWorkflowFullAccess politique à votre IAM identité.

Cette politique fournit un accès complet au service SWF de configuration Amazon.

Détails de l’autorisation

Cette politique inclut les autorisations suivantes.

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

Limitations du modèle de service des stratégies IAM

Vous devez tenir compte des contraintes du modèle de service lorsque vous créez IAM des politiques. Il est possible de créer une IAM politique syntaxiquement valide qui représente une SWF demande Amazon non valide ; une demande autorisée en termes de contrôle d'accès peut toujours échouer car il s'agit d'une demande non valide.

Par exemple, la stratégie suivante pour ListOpenWorkflowExecutions n'est pas recommandée :

{ "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" } } } ] }

Le modèle SWF de service Amazon n'autorise pas l'utilisation des tagFilter paramètres typeFilter et dans la même ListOpenWorkflowExecutions demande. La politique autorise donc les appels que le service rejettera (en lançant) en ValidationException tant que demande non valide.