Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Amazon SWF IAM-Richtlinien
Eine IAM-Richtlinie enthält ein oder mehrere Statement
Elemente, von denen jedes eine Reihe von Elementen enthält, die die Richtlinie definieren. Eine vollständige Liste der Elemente und eine allgemeine Erläuterung der Erstellung von Richtlinien finden Sie unter The Access Policy Language. Die Amazon SWF SWF-Zugriffskontrolle basiert auf den folgenden Elementen:
- Auswirkung
-
(Erforderlich) Der Effekt der Anweisung:
deny
oderallow
.Anmerkung
Sie müssen den Zugriff explizit zulassen. IAM verweigert den Zugriff standardmäßig.
- Ressource
-
(Erforderlich) Die Ressource — eine Entität in einem AWS Dienst, mit der ein Benutzer interagieren kann —, für die sich die Anweisung bezieht.
Sie können Ressourcenberechtigungen nur für Domänen erteilen. Beispielsweise kann eine Richtlinie nur Zugriff auf bestimmte Domänen in Ihrem Konto erteilen. Um Berechtigungen für eine Domain auszudrücken, legen Sie
Resource
den Amazon-Ressourcennamen (ARN) der Domain fest, der das Format „arn:aws:swf::Region
:AccountID
/domain/“ hat.DomainName
Region
ist die AWS Region,AccountID
ist die Konto-ID ohne Bindestriche und ist der Domainname.DomainName
- Aktion
-
(Erforderlich) Die Aktion, für die sich die Aussage bezieht und auf die Sie sich beziehen, indem Sie das folgende Format verwenden
serviceId
:action
. Stellen Sie für Amazon SWFserviceID
auf einswf
.swf:StartWorkflowExecution
Bezieht sich beispielsweise auf die StartWorkflowExecutionAktion und wird verwendet, um zu steuern, welche Benutzer Workflows starten dürfen.Wenn Sie die Nutzungsberechtigung erteilen RespondDecisionTaskCompleted, können Sie auch den Zugriff auf die enthaltene Entscheidungsliste kontrollieren, indem Sie die Berechtigungen für die Pseudo-API
Action
zum Ausdruck bringen. Da IAM standardmäßig den Zugriff verweigert, muss die Entscheidung eines Entscheiders ausdrücklich zugelassen werden, andernfalls wird sie nicht akzeptiert. Mithilfe des*
-Werts können Sie alle Entscheidungen erlauben. - Bedingung
-
(Optional) Drückt eine Einschränkung für einen oder mehrere Parameter einer Aktion aus. Hierdurch werden die zulässigen Werte eingeschränkt.
Amazon SWF SWF-Aktionen haben oft einen großen Umfang, den Sie mithilfe von IAM-Bedingungen reduzieren können. Um beispielsweise einzuschränken, auf welche Aufgabenlisten die PollForActivityTaskAktion zugreifen darf, fügen Sie a hinzu
Condition
und geben mit derswf:taskList.name
Taste die zulässigen Listen an.Sie können für die folgenden Entitäten Einschränkungen hinzufügen.
-
Der Workflow-Typ. Der Name und die Version verfügen über separate Schlüssel.
-
Der Aktivitätstyp. Der Name und die Version verfügen über separate Schlüssel.
-
Aufgabenlisten.
-
Tags. Sie können für manche Aktionen mehrere Tags angeben. In diesem Fall verfügt jedes Tag über einen separaten Schlüssel.
Anmerkung
Bei Amazon SWF handelt es sich bei den Werten ausschließlich um Zeichenketten, sodass Sie einen Parameter einschränken, indem Sie einen Zeichenkettenoperator wie
StringEquals
, verwenden, der den Parameter auf eine bestimmte Zeichenfolge beschränkt. Die regulären Zeichenfolgenoperatoren wieStringEquals
erfordern es jedoch, dass alle Anfragen den Parameter enthalten. Wenn Sie den Parameter nicht ausdrücklich einschließen und kein Standardwert vorliegt, wie beispielsweise die während der Typenregistrierung bereitgestellte standardmäßige Aufgabenliste, wird der Zugriff verweigert.Es empfiehlt sich häufig, Bedingungen als optional zu behandeln, so können Sie eine Aktion auch ohne den zugeordneten Parameter aufrufen. Beispielsweise könnten Sie einem Entscheider die Möglichkeit geben, eine Reihe von RespondDecisionTaskCompletedEntscheidungen zu spezifizieren, aber auch, nur eine davon für einen bestimmten Anruf anzugeben. In diesem Fall beschränken Sie die entsprechenden Parameter mithilfe des
StringEqualsIfExists
-Operators, der den Zugriff gewährt, wenn der Parameter der Bedingung entspricht, bei Abwesenheit des Parameters den Zugriff jedoch verweigert.Eine vollständige Liste der einschränkbaren Parameter sowie der zugeordneten Schlüssel finden Sie unter Übersicht über API-Befehle.
-
Der folgende Abschnitt enthält Beispiele für die Erstellung von Amazon SWF SWF-Richtlinien. Weitere Informationen finden Sie unter Zeichenfolgenbedingungen.
Richtlinien für Amazon SWF schreiben
Ein Workflow besteht aus mehreren Akteuren — Aktivitäten, Entscheidern usw. Sie können den Zugriff für jeden Akteur steuern, indem Sie eine entsprechende IAM-Richtlinie anhängen.
Mit der folgenden Aktion erhält der Akteur vollen Kontozugriff in allen Regionen:
Aktion:
swf:*
Ressource:
arn:aws:swf:*:123456789012:/domain/*
Sie können Platzhalter verwenden, damit ein einzelner Wert mehrere Ressourcen, Aktionen oder Regionen repräsentiert.
-
Der erste Platzhalter (
*
) imResource
Wert gibt an, dass die Ressourcenberechtigungen für alle Regionen gelten.Um die Berechtigungen auf eine einzelne Region zu beschränken, ersetzen Sie den Platzhalter durch die entsprechende Regionszeichenfolge, z. B. us-east-1.
-
Der zweite Platzhalter (
*
) imResource
-Wert ermöglicht es dem Akteur, auf jede der zum Konto gehörenden Domänen innerhalb der angegebenen Regionen zuzugreifen. -
Der Platzhalter (
*
) imAction
Wert ermöglicht es dem Akteur, jede Amazon SWF SWF-Aktion aufzurufen.
Weitere Informationen zur Verwendung von Platzhaltern finden Sie unter Beschreibungen der Elemente.
Domänenberechtigungen
Um die Arbeitsabläufe einer Abteilung auf eine bestimmte Domäne zu beschränken, könnten Sie einem Akteur eine Genehmigung erteilen, die es einem Akteur ermöglicht, jede Aktion auszurufen, jedoch nur für eine bestimmte Abteilung.
Um einem Akteur Zugriff auf mehr als eine Domäne zu gewähren, geben Sie für jede Domäne die ausdrückliche Genehmigung in Form einer Liste von Anweisungen aus:
-
Aktion:
swf:*
-
Ressource:
arn:aws:swf:*:123456789012:/domain/department1
-
Ressource:
arn:aws:swf:*:123456789012:/domain/department2
Sie können einem Akteur erlauben, jede Amazon SWF SWF-Aktion in den department2
Domänen department1
und zu verwenden. Manchmal können Sie auch Platzhalter verwenden, um mehrere Domänen zu repräsentieren.
API-Berechtigungen und -Einschränkungen
Sie steuern, welche Aktionen ein Akteur verwenden kann, indem Sie die Aktion im Action
Element angeben.
Mit der folgenden Aktion kann ein Akteur Workflows nur aufrufen, StartWorkflowExecution
um sie zu starten. Er kann keine anderen Aktionen verwenden.
-
Aktion:
swf:StartWorkflowExecution
Bedingungen
Sie können optional die zulässigen Parameterwerte der Aktion mithilfe eines Condition
Elements einschränken.
Um einzuschränken, welche Workflows ein Akteur starten kann, schränken Sie einen oder mehrere der StartWorkflowExecution
Parameterwerte wie folgt ein:
"Condition" : { "StringEquals" : { "swf:workflowType.name" : "workflow1", "swf:workflowType.version" : "version2" } }
Ein Akteur mit den vorherigen Einschränkungen kann nur version2
von ausgeführt werden, workflow1
und beide Parameter müssen in der Anforderung enthalten sein.
Sie können einen Parameter aber auch beschränken, ohne dass er in einer Anfrage enthalten sein muss, indem Sie einen StringEqualsIfExists
-Operator verwenden. Gehen Sie dazu folgendermaßen vor:
"Condition" : { "StringEqualsIfExists" : { "swf:taskList.name" : "task_list_name" } }
Ein Akteur mit der vorherigen Richtlinie kann optional eine Aufgabenliste angeben, wenn er eine Workflow-Ausführung startet.
Sie können für manche Aktionen eine Reihe von Tags beschränken. Jedes Tag hat einen eigenen Schlüssel, mit swf:tagList.member.0
dem Sie das erste Tag in der Liste einschränken, swf:tagList.member.1
das zweite Tag in der Liste einschränken usw., bis zu einem Maximum von 5.
Sie müssen vorsichtig sein, wie Sie Taglisten einschränken. Beispielsweise wird die folgende Bedingung nicht empfohlen.
Die folgende Bedingung wird nicht empfohlen, da Sie damit optional entweder some_ok_tag
oder angeben könnenanother_ok_tag
. Die Bedingung schränkt jedoch nur das erste Element der Tagliste ein. Die Liste könnte zusätzliche Elemente mit beliebigen Werten enthalten, die alle zulässig wären, weil die Bedingung keine Bedingungen für swf:tagList.member.1
swf:tagList.member.2
, usw. erfüllt.
// Example to illustrate an insecure Condition "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" } }
Eine Möglichkeit, das vorherige Problem zu lösen, besteht darin, die Verwendung von Taglisten zu verbieten.
Die folgende Richtlinie stellt sicher, dass nur some_ok_tag
oder another_ok_tag
zulässig sind, da die Liste nur ein Element besitzen darf.
"Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" }, "Null" : { "swf:tagList.member.1" : "true" } }
Pseudo-API-Berechtigungen und -Einschränkungen
Um die verfügbaren Entscheidungen einzuschränkenRespondDecisionTaskCompleted
, müssen Sie dem Akteur zunächst erlauben, anzurufenRespondDecisionTaskCompleted
. Anschließend geben Sie die Berechtigungen für die entsprechenden Pseudo-API-Mitglieder mit derselben Syntax wie für die reguläre API wie folgt aus:
-
Aussage 1
Ressource:
arn:aws:swf:*:123456789012:/domain/*
Aktion:
swf:RespondDecisionTaskCompleted
-
Aussage 2
Ressource:
*
Aktion:
swf:ScheduleActivityTask
Zustand:
"StringEquals" : { "swf:activityType.name" : "SomeActivityType" }
Die erste Statement
ermöglicht es dem Schauspieler, anzurufenRespondDecisionTaskCompleted
. Die zweite Anweisung ermöglicht es dem Akteur, die ScheduleActivityTask
Entscheidung zu nutzen, Amazon SWF anzuweisen, eine Aktivitätsaufgabe zu planen. Um alle Entscheidungen zuzulassen, ersetzen Sie „swf:ScheduleActivityTask" durch „swf: *“.
Sie können Bedingungsoperatoren verwenden, um Parameter wie bei der regulären API einzuschränken. Der StringEquals
Operator im vorherigen Beispiel Condition
ermöglicht esRespondDecisionTaskCompleted
, eine Aktivitätsaufgabe für die SomeActivityType
Aktivität zu planen, und er muss diese Aufgabe planen. Wenn Sie RespondDecisionTaskCompleted
die Möglichkeit geben wollen, einen Parameterwert zu verwenden, dies aber nicht erforderlich sein soll, können Sie stattdessen den StringEqualsIfExists
-Operator verwenden.
AWS verwaltete Richtlinie: SimpleWorkflowFullAccess
Sie können die SimpleWorkflowFullAccess
-Richtlinie an Ihre IAM-Identitäten anfügen.
Diese Richtlinie bietet vollen Zugriff auf den Amazon SWF SWF-Konfigurationsservice.
Einschränkungen des Servicemodells in Bezug auf IAM-Richtlinien
Bei der Erstellung von IAM-Richtlinien müssen Sie Einschränkungen des Servicemodells berücksichtigen. Es ist möglich, eine syntaktisch gültige IAM-Richtlinie zu erstellen, die eine ungültige Amazon SWF SWF-Anfrage darstellt. Eine Anforderung, die im Hinblick auf die Zugriffskontrolle zulässig ist, kann dennoch fehlschlagen, da es sich um eine ungültige Anforderung handelt.
Das Amazon SWF-Servicemodell erlaubt beispielsweise nicht, dass die tagFilter
Parameter typeFilter
und in derselben ListOpenWorkflowExecutions
Anfrage verwendet werden. Die folgende Bedingung würde Aufrufe zulassen, die der Service ablehnt — indem er sie ausgibt ValidationException
— als ungültige Anfrage:
"Condition" : { "StringEquals" : { "swf:typeFilter.name" : "workflow_name", "swf:typeFilter.version" : "workflow_version", "swf:tagFilter.tag" : "some_tag" } }