SWFIAMAmazon-Richtlinien - Amazon Simple Workflow Service

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.

SWFIAMAmazon-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 SWF Amazon-Zugriffskontrolle basiert auf den folgenden Elementen:

Auswirkung

(Erforderlich) Der Effekt der Anweisung: deny oder allow.

Anmerkung

Sie müssen den Zugriff ausdrücklich zulassen; IAM verweigert standardmäßig den Zugriff.

Ressource

(Erforderlich) Die Ressource — eine Entität in einem AWS Dienst, mit der ein Benutzer interagieren kann —, für die die Anweisung gilt.

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/DomainName". Region ist die Region, AWS AccountID ist die Konto-ID ohne Bindestriche und DomainName ist der Domainname.

Aktion

(Erforderlich) Die Aktion, für die sich die Anweisung bezieht und auf die Sie verweisen, indem Sie das folgende Format verwenden: serviceId:action. Für AmazonSWF, legen Sie fest serviceID zuswf. swf:StartWorkflowExecutionBezieht sich beispielsweise auf die StartWorkflowExecutionAktion und wird verwendet, um zu steuern, welche Benutzer Workflows starten dürfen.

Wenn Sie eine Nutzungsberechtigung erteilen RespondDecisionTaskCompleted, können Sie auch den Zugriff auf die darin enthaltene Entscheidungsliste kontrollieren, indem Sie die Berechtigungen für das Pseudo Action API zum Ausdruck bringen. Da der Zugriff standardmäßig IAM verweigert wird, 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.

SWFAmazon-Aktionen haben oft einen großen Umfang, den Sie durch die Verwendung 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 der swf: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 handelt es sich bei den Werten ausschließlich um ZeichenkettenSWF, sodass Sie einen Parameter einschränken, indem Sie einen Zeichenkettenoperator wieStringEquals, verwenden, der den Parameter auf eine bestimmte Zeichenfolge beschränkt. Die regulären Zeichenfolgenoperatoren wie StringEquals 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. Möglicherweise möchten Sie einem Entscheider die Möglichkeit geben, eine Reihe von RespondDecisionTaskCompletedEntscheidungen anzugeben, aber auch, dass er nur eine davon für einen bestimmten Anruf angeben kann. 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 APIZusammenfassung.

Der folgende Abschnitt enthält Beispiele für die Erstellung von SWF Amazon-Richtlinien. Weitere Informationen finden Sie unter Zeichenfolgenbedingungen.

Beispiele SWF für Amazon-Richtlinien

Ein Workflow besteht aus mehreren Akteuren — Aktivitäten, Entscheidern usw. Sie können den Zugriff für jeden Akteur steuern, indem Sie eine entsprechende Richtlinie anhängen. IAM In diesem Abschnitt finden Sie einige Beispiele. Im folgenden Beispiel wird der einfachste Fall dargestellt:

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

Wenn Sie diese Richtlinie einem Akteur anfügen, hat er vollständigen Zugriff auf alle Regionen des Kontos. Sie können Platzhalter verwenden, damit ein einzelner Wert mehrere Ressourcen, Aktionen oder Regionen repräsentiert.

  • Der erste Platzhalter (*) im Resource-Wert bedeutet, dass die Ressourcenberechtigungen auf alle Regionen zutreffen. 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 (*) im Resource-Wert ermöglicht es dem Akteur, auf jede der zum Konto gehörenden Domänen innerhalb der angegebenen Regionen zuzugreifen.

  • Der Platzhalter (*) im Action Wert ermöglicht es dem Akteur, jede SWF Amazon-Aktion aufzurufen.

Weitere Informationen zur Verwendung von Platzhaltern finden Sie unter Beschreibungen der Elemente.

In den folgenden Abschnitten finden Sie Beispielrichtlinien, die die Berechtigungen in einer differenzierteren Art und Weise erteilen.

Domänenberechtigungen

Wenn Sie die Workflows einer Abteilung auf eine bestimmte Domäne beschränken möchten, können Sie folgendermaßen vorgehen:

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

Wenn Sie diese Richtlinie einem Akteur anfügen, kann er alle Aktionen aufrufen, aber nur für die Domäne department1.

Wenn Sie möchten, dass ein Akteur Zugriff auf mehr als eine Domäne habt, können Sie die Berechtigungen folgendermaßen separat für die einzelnen Domänen erteilen:

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

Wenn Sie diese Richtlinie an einen Akteur anhängen, kann er jede SWF Amazon-Aktion in den department2 Domänen department1 und verwenden. Manchmal können Sie auch Platzhalter verwenden, um mehrere Domänen zu repräsentieren.

APIBerechtigungen und Einschränkungen

Mit dem Action-Element können Sie kontrollieren, welche Aktionen ein Akteur verwenden kann. Optional können Sie die zulässigen Parameterwerte einer Aktion mithilfe des Condition-Elements beschränken.

Wenn Sie den Akteur auf bestimmte Aktionen beschränken möchten, können Sie folgendermaßen vorgehen:

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

Wenn Sie diese Richtlinie einem Akteur anfügen, kann er StartWorkflowExecution aufrufen, um in der department2-Domäne Workflows zu starten. Er kann keine anderen Aktionen verwenden oder Workflows in anderen Domänen starten.

Indem Sie folgendermaßen einen oder mehrere StartWorkflowExecution-Parameterwerte beschränken, können Sie zusätzlich einschränken, welche Workflows ein Akteur starten kann:

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

Diese Richtlinie beschränkt die Parameter für die StartWorkflowExecution-Aktionen name und version. Wenn Sie diese Richtlinie einem Akteur anfügen, kann er nur version2 des workflow1 in der Domäne department1 ausführen und beide Parameter müssen in der Anfrage 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:

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

Diese Richtlinie ermöglicht es einem Akteur, beim Start einer Workflow-Ausführung optional eine Aufgabenliste festzulegen.

Sie können für manche Aktionen eine Reihe von Tags beschränken. In diesem Fall besitzt jedes Tag einen eigenen Schlüssel. Sie verwenden swf:tagList.member.0, um das erste Tag in der Liste einzuschränken, swf:tagList.member.1, um das zweite Tag in der Liste einzuschränken usw, bis maximal 5 Tags. Allerdings müssen Sie bei der Beschränkung von Taglisten äußerst vorsichtig vorgehen. Das folgende Beispiel zeigt eine Richtlinie, die nicht empfohlen wird:

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

Diese Richtlinie ermöglicht es Ihnen, wahlweise some_ok_tag oder another_ok_tag festzulegen. Jedoch beschränkt diese Richtlinie nur das erste Element der Tag-Liste. Diese Liste könnte zusätzliche Elemente mit beliebigen Werten umfassen, die alle zugelassen würden, da diese Richtlinie keine Bedingungen auf swf:tagList.member.1, swf:tagList.member.2 usw. anwendet.

Eine Möglichkeit, dieses Problem zu beheben, besteht darin, den Einsatz von Tag-Listen zu untersagen. 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.

{ "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-Berechtigungen und Einschränkungen

Wenn Sie die für RespondDecisionTaskCompleted verfügbaren Entscheidungen beschränken möchten, müssen Sie dem Akteur zunächst die Berechtigung erteilen, RespondDecisionTaskCompleted aufzurufen. Anschließend können Sie Berechtigungen für die entsprechenden Pseudomember ausdrücken, indem Sie dieselbe Syntax wie für die regulären API Elemente verwendenAPI, und zwar wie folgt:

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

Wenn Sie diese Richtlinie einem Akteur anfügen, ermöglicht das erste Statement-Element dem Akteur, RespondDecisionTaskCompletedaufzurufen. Das zweite Element 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 genau wie reguläre API Operatoren verwenden, um Parameter einzuschränken. Der StringEquals-Operator in dieser Condition ermöglicht RespondDecisionTaskCompleted eine Aktivitätsaufgabe für die SomeActivityType-Aktivität zu planen und er muss diese Aufgabe auch 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 anhängen.

Diese Richtlinie bietet vollen Zugriff auf den SWF Amazon-Konfigurationsservice.

Berechtigungsdetails

Diese Richtlinie umfasst die folgenden Berechtigungen.

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

Servicemodelleinschränkungen bei 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 SWF Amazon-Anfrage darstellt. Eine Anfrage, die im Hinblick auf die Zugriffskontrolle zulässig ist, kann dennoch fehlschlagen, da es sich um eine ungültige Anfrage handelt.

Beispielsweise wird die folgende Richtlinie für ListOpenWorkflowExecutions nicht empfohlen:

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

Das SWF Amazon-Servicemodell erlaubt nicht, dass die tagFilter Parameter typeFilter und in derselben ListOpenWorkflowExecutions Anfrage verwendet werden. Die Richtlinie erlaubt daher Anrufe, die der Service ablehnt — indem er sie ausgibt ValidationException — als ungültige Anfrage.