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.
Politiques IAM d'Amazon SWF
Une politique IAM 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 d'accès Amazon SWF repose sur les éléments suivants :
- Effet
-
[Obligatoire] L'effet de l'instruction :
deny
ouallow
.Note
Vous devez autoriser l'accès de manière explicite ; 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
Resource
le nom de ressource Amazon (ARN) du domaine, au format « arn:aws:swf : : :Region
/domain/ ».AccountID
DomainName
Region
est la AWS région,AccountID
l'identifiant du compte sans tiret etDomainName
le nom de domaine. - Action
-
(Obligatoire) L'action à laquelle s'applique l'instruction, à laquelle vous faites référence en utilisant le format suivant :
serviceId
:action
. Pour Amazon SWF, définissez surserviceID
.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 les autorisations pour la pseudo-API. Comme IAM refuse l'accès 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.
Les actions Amazon SWF ont souvent une portée étendue, que vous pouvez réduire en utilisant les conditions IAM. Par exemple, pour limiter les listes de tâches auxquelles l'PollForActivityTaskaction est autorisée à accéder, vous devez inclure un
Condition
et utiliser laswf: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 Amazon SWF, les valeurs sont toutes des chaînes. Vous pouvez donc contraindre un paramètre à l'aide d'un opérateur de chaîne tel que
StringEquals
, qui limite le paramètre à une chaîne spécifiée. Toutefois, avec les opérateurs de comparaison de chaîne habituels commeStringEquals
, 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 donné. 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 Récapitulatif API.
-
La section suivante fournit des exemples de création de politiques Amazon SWF. Pour plus d'informations, consultez la section Conditions de chaîne.
Règles de rédaction pour Amazon SWF
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 attachant une politique IAM appropriée.
Avec l'action suivante, l'acteur aura un accès complet à son compte dans toutes les régions :
Action :
swf:*
Ressource :
arn:aws:swf:*:123456789012:/domain/*
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 (
*
) de laResource
valeur indique que les autorisations relatives aux ressources s'appliquent à 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 valeurResource
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 laAction
valeur permet à l'acteur d'appeler n'importe quelle action Amazon SWF.
Pour plus d'informations sur la façon d'utiliser les caractères génériques, consultez la page Descriptions d'élément.
Autorisations de domaine
Pour restreindre les flux de travail d'un département à un domaine spécifique, vous pouvez accorder une autorisation permettant à un acteur de prendre n'importe quelle action, mais uniquement pour un département spécifique.
Pour accorder à un acteur l'accès à plusieurs domaines, exprimez l'autorisation pour chaque domaine sous la forme d'une liste de déclarations :
-
Action :
swf:*
-
Ressource :
arn:aws:swf:*:123456789012:/domain/department1
-
Ressource :
arn:aws:swf:*:123456789012:/domain/department2
Vous pouvez autoriser un acteur à utiliser n'importe quelle action Amazon SWF dans les domaines department1
etdepartment2
. Vous pouvez aussi parfois utiliser des caractères génériques pour représenter plusieurs domaines.
Contraintes et autorisations de l'API
Vous pouvez contrôler les actions qu'un acteur peut utiliser en spécifiant l'action dans l'Action
élément.
Avec l'action suivante, un acteur ne peut appeler que StartWorkflowExecution
pour démarrer des flux de travail. Il ne peut utiliser aucune autre action.
-
Action :
swf:StartWorkflowExecution
Conditions
Vous pouvez éventuellement limiter les valeurs de paramètres autorisées de l'action en utilisant un Condition
élément.
Pour limiter les flux de travail qu'un acteur peut démarrer, limitez une ou plusieurs valeurs de StartWorkflowExecution
paramètres, comme suit :
"Condition" : { "StringEquals" : { "swf:workflowType.name" : "workflow1", "swf:workflowType.version" : "version2" } }
Un acteur avec les contraintes précédentes ne peut fonctionner que version2
workflow1
et les deux paramètres doivent être inclus 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 :
"Condition" : { "StringEqualsIfExists" : { "swf:taskList.name" : "task_list_name" } }
Un acteur doté de la politique précédente peut éventuellement spécifier une liste de tâches lorsqu'il lance l'exécution d'un flux de travail.
Vous pouvez limiter la liste des balises pour certaines actions. Chaque balise possède une clé distincte. Vous pouvez donc l'utiliser swf:tagList.member.0
pour contraindre la première balise de la liste, swf:tagList.member.1
pour contraindre la deuxième balise de la liste, etc., jusqu'à un maximum de 5.
Vous devez faire attention à la manière dont vous limitez les listes de balises. Par exemple, la condition suivante n'est pas recommandée.
La condition suivante n'est pas recommandée car elle vous permet de spécifier éventuellement l'un some_ok_tag
ou l'autreanother_ok_tag
. Toutefois, la condition limite uniquement le premier élément de la liste de balises. La liste peut contenir des éléments supplémentaires avec des valeurs arbitraires qui seraient tous autorisés car la condition ne s'applique à aucune condition swf:tagList.member.1
swf:tagList.member.2
, etc.
// Example to illustrate an insecure Condition "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" } }
L'un des moyens de résoudre le problème précédent 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.
"Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" }, "Null" : { "swf:tagList.member.1" : "true" } }
Contraintes et autorisations de pseudo-API
Pour limiter les décisions disponiblesRespondDecisionTaskCompleted
, vous devez d'abord autoriser l'acteur à appelerRespondDecisionTaskCompleted
. Vous exprimez ensuite les autorisations pour les pseudo-membres d'API appropriés en utilisant la même syntaxe que pour l'API normale, comme suit :
-
Déclaration 1
Ressource :
arn:aws:swf:*:123456789012:/domain/*
Action :
swf:RespondDecisionTaskCompleted
-
Déclaration 2
Ressource :
*
Action :
swf:ScheduleActivityTask
État :
"StringEquals" : { "swf:activityType.name" : "SomeActivityType" }
Le premier Statement
permet à l'acteur d'appelerRespondDecisionTaskCompleted
. La deuxième déclaration permet à l'acteur d'utiliser la ScheduleActivityTask
décision de demander à Amazon SWF de planifier une tâche d'activité. Pour autoriser toutes les décisions, remplacez « swf : ScheduleActivityTask » par « swf : * ».
Vous pouvez utiliser des opérateurs de condition pour limiter les paramètres, tout comme avec l'API classique. Dans StringEquals
l'exemple précédent, l'opérateur Condition
RespondDecisionTaskCompleted
permet de planifier une tâche d'activité pour cette SomeActivityType
activité, et il doit planifier cette tâche. 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 politique SimpleWorkflowFullAccess
à vos identités IAM.
Cette politique fournit un accès complet au service de configuration Amazon SWF.
Limitations du modèle de service sur les politiques IAM
Vous devez tenir compte des contraintes du modèle de service lorsque vous créez des politiques IAM. Il est possible de créer une politique IAM syntaxiquement valide qui représente une demande Amazon SWF non valide ; une demande autorisée en termes de contrôle d'accès peut toujours échouer car elle n'est pas valide.
Par exemple, le modèle de service Amazon SWF n'autorise pas l'utilisation typeFilter
des tagFilter
paramètres et dans la même ListOpenWorkflowExecutions
demande. La condition suivante autoriserait les appels que le service rejettera (en lançant) en ValidationException
tant que demande non valide :
"Condition" : { "StringEquals" : { "swf:typeFilter.name" : "workflow_name", "swf:typeFilter.version" : "workflow_version", "swf:tagFilter.tag" : "some_tag" } }