Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
SWFIAMPolitiche di Amazon
Una IAM policy contiene uno o più Statement
elementi, ognuno dei quali contiene un set di elementi che definiscono la policy. Per un elenco completo degli elementi e una discussione generale su come costruire le politiche, vedere The Access Policy Language. Il controllo degli SWF accessi di Amazon si basa sui seguenti elementi:
- Effetto
-
(Obbligatorio) L'effetto dell'istruzione:
deny
oallow
.Nota
È necessario consentire esplicitamente l'accesso; IAM nega l'accesso per impostazione predefinita.
- Risorsa
-
(Obbligatorio) La risorsa, un'entità in un AWS servizio con cui un utente può interagire, a cui si applica l'istruzione.
Puoi esprimere autorizzazioni a livello di risorsa solo per i domini. Ad esempio, una policy può consentire l'accesso soltanto a determinati domini nel tuo account. Per esprimere le autorizzazioni per un dominio, imposta
Resource
l'Amazon Resource Name (ARN) del dominio, che ha il formato «arn:aws:swf:Region
:AccountID
:/dominio/DomainName
".Region
è la regione, AWSAccountID
è l'ID dell'account senza trattini eDomainName
è il nome di dominio. - Azione
-
(Obbligatorio) L'azione a cui si applica l'istruzione, a cui si fa riferimento utilizzando il seguente formato:
serviceId
:action
. Per AmazonSWF, setserviceID
perswf
. Ad esempio,swf:StartWorkflowExecution
fa riferimento all'StartWorkflowExecutionazione e viene utilizzato per controllare quali utenti sono autorizzati ad avviare flussi di lavoro.Se concedi l'autorizzazione all'uso RespondDecisionTaskCompleted, puoi anche controllare l'accesso all'elenco di decisioni incluso utilizzando
Action
to express le autorizzazioni per lo pseudo. API Poiché per impostazione predefinita IAM nega l'accesso, la decisione di un decisore deve essere esplicitamente consentita o non verrà accettata. Puoi utilizzare un valore*
per consentire tutte le decisioni. - Condizione
-
(Facoltativo) Esprime un vincolo su uno o più parametri di un'operazione che limita i valori consentiti.
SWFLe azioni di Amazon hanno spesso un'ampia portata, che puoi ridurre utilizzando IAM le condizioni. Ad esempio, per limitare gli elenchi di attività a cui l'PollForActivityTaskazione può accedere, includi a
Condition
e utilizza laswf:taskList.name
chiave per specificare gli elenchi consentiti.Puoi esprimere vincoli per le entità elencate di seguito.
-
Il tipo di flusso di lavoro. Il nome e la versione hanno chiavi distinte.
-
Il tipo di attività. Il nome e la versione hanno chiavi distinte.
-
Elenchi di task.
-
Tags. Puoi specificare più tag per alcune operazioni. In tal caso, ogni tag ha una chiave distinta.
Nota
Per AmazonSWF, i valori sono tutti stringhe, quindi è possibile vincolare un parametro utilizzando un operatore di stringa come
StringEquals
, che limita il parametro a una stringa specificata. Tuttavia, con gli operatori di confronto di tipo stringa standard comeStringEquals
tutte le richieste devono includere il parametro. Se non includi il parametro in modo esplicito e non esiste alcun valore di default, come l'elenco di task di default specificato durante la registrazione del tipo, l'accesso verrà negato.È spesso utile considerare le condizioni come facoltative, di modo che sia possibile chiamare un'operazione senza necessariamente includere il parametro associato. Ad esempio, potresti voler consentire a un decisore di specificare un insieme di RespondDecisionTaskCompleteddecisioni, ma anche consentirgli di specificarne solo una per ogni chiamata particolare. In tal caso, applichi un vincolo ai parametri appropriati utilizzando un operatore
StringEqualsIfExists
, che consente l'accesso se il parametro soddisfa la condizione, ma che non lo nega se il parametro è assente.Per un elenco completo dei parametri a cui è possibile applicare un vincolo e delle chiavi associate, consulta APIRiepilogo.
-
La sezione seguente fornisce esempi di come costruire SWF le politiche di Amazon. Per informazioni dettagliate, consulta la sezione relativa alle condizioni di stringa.
Esempi di SWF policy di Amazon
Un flusso di lavoro è composto da più attori: attività, decisori e così via. È possibile controllare l'accesso per ogni attore allegando una politica appropriata. IAM Questa sezione fornisce alcuni esempi. L'esempio seguente illustra il caso più semplice:
{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/*" } ] }
Se colleghi un attore a questa policy, l'attore ha accesso completo all'account in tutte le regioni. Puoi utilizzare i caratteri jolly per rappresentare più risorse, operazioni o regioni con un singolo valore.
-
Il primo carattere jolly (
*
) nel valoreResource
indica che le autorizzazioni a livello di risorsa sono applicate a tutte le regioni. Per limitare le autorizzazioni a una singola regione, sostituisci il carattere jolly con la stringa di regione appropriata, ad esempio us-east-1. -
Il secondo carattere jolly (
*
) nel valoreResource
consente all'attore di accedere a qualsiasi dominio dell'account nelle regioni specificate. -
Il carattere jolly (
*
) nelAction
valore consente all'attore di richiamare qualsiasi SWF azione Amazon.
Per informazioni dettagliate su come utilizzare i caratteri jolly, consulta la sezione relativa alle descrizioni degli elementi.
Le sezioni successive illustrano esempi di policy che concedono autorizzazioni in modo più granulare.
Autorizzazioni di dominio
Se intendi limitare i flussi di lavoro di un dipartimento a un particolare dominio, puoi utilizzare codice simile al seguente:
{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:*", "Resource" : "arn:aws:swf:*:123456789012:/domain/department1" } ] }
Se colleghi un attore a questa policy, l'attore può chiamare qualsiasi operazione, ma solo per il dominio department1.
Se desideri che un attore abbia accesso a più domini, puoi esprimere l'autorizzazione per ogni dominio separatamente, come illustrato di seguito:
{ "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" } ] }
Se associ questa policy a un attore, quest'ultimo può utilizzare qualsiasi SWF azione Amazon nei department2
domini department1
and. A volte, puoi anche utilizzare i caratteri jolly per rappresentare più domini.
APIAutorizzazioni e vincoli
L'elemento Action
ti consente di determinare le operazioni che un attore può utilizzare. Puoi eventualmente applicare un vincolo ai valori di parametro consentiti dell'operazione utilizzando l'elemento Condition
.
Se vuoi che un attore utilizzi unicamente determinate operazioni, puoi utilizzare codice simile al seguente:
{ "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : "swf:StartWorkflowExecution", "Resource" : "arn:aws:swf:*:123456789012:/domain/department2" } ] }
Se colleghi un attore a questa policy, l'attore può chiamare StartWorkflowExecution
per avviare flussi di lavoro nel dominio department2
, ma non può utilizzare altre operazioni o avviare flussi di lavoro in altri domini.
Puoi limitare ulteriormente i flussi di lavoro che un attore può avviare applicando un vincolo a uno o più valori del parametro StartWorkflowExecution
, come illustrato di seguito:
{ "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" } } } ] }
Questa policy applica un vincolo ai parametri name
e version
dell'operazione StartWorkflowExecution
. Se colleghi un attore alla policy, l'attore può eseguire solo version2
di workflow1
nel dominio department1
ed entrambi i parametri devono essere inclusi nella richiesta.
Puoi applicare un vincolo a un parametro senza che questo sia incluso in una richiesta utilizzando un operatore StringEqualsIfExists
, come illustrato di seguito:
{ "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" } } } ] }
Questa policy consente a un attore di specificare eventualmente un elenco di task all'avvio di un'esecuzione di flusso di lavoro.
Puoi applicare un vincolo a un elenco di tag per alcune operazioni. In tal caso, ogni tag ha una chiave distinta. Di conseguenza, utilizzi swf:tagList.member.0
per applicare un vincolo al primo tag nell'elenco, swf:tagList.member.1
per applicare un vincolo al secondo tag nell'elenco e così di seguito, fino a un massimo di 5. Devi tuttavia prestare attenzione al modo in cui applichi vincoli a elenchi di tag. Ad esempio, di seguito viene illustrato un esempio di policy non consigliata:
{ "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" } } } ] }
Questa policy ti consente di specificare eventualmente some_ok_tag
o another_ok_tag
. Tuttavia, applica un vincolo soltanto al primo elemento dell'elenco di tag. L'elenco potrebbe avere ulteriori elementi con valori arbitrari che sarebbero tutti consentiti in quanto la policy non applica alcuna condizione a swf:tagList.member.1
, swf:tagList.member.2
e così via.
Una soluzione a questo problema è non consentire l'utilizzo di elenchi di tag. La policy seguente autorizza soltanto some_ok_tag
o another_ok_tag
in quanto impone la presenza di un solo elemento nell'elenco.
{ "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" } } } ] }
Pseudo API autorizzazioni e vincoli
Se intendi limitare le decisioni disponibili a RespondDecisionTaskCompleted
, devi dapprima consentire all'attore di chiamare RespondDecisionTaskCompleted
. È quindi possibile esprimere le autorizzazioni per gli pseudo API membri appropriati utilizzando la stessa sintassi utilizzata per i normali, come segue: API
{ "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" } } } ] }
Se colleghi questa policy a un attore, il primo elemento Statement
consente all'attore di chiamare RespondDecisionTaskCompleted
. Il secondo elemento consente all'attore di utilizzare la ScheduleActivityTask
decisione di SWF indirizzare Amazon a pianificare un'attività. Per consentire tutte le decisioni, sostituisci «swf:ScheduleActivityTask" con «swf: *».
È possibile utilizzare gli operatori Condition per vincolare i parametri esattamente come si fa normalmente. API L'operatore StringEquals
in questa Condition
consente a RespondDecisionTaskCompleted
di pianificare un task di attività per l'attività SomeActivityType
e deve pianificare il task. Se intendi consentire a RespondDecisionTaskCompleted
di utilizzare facoltativamente un valore di parametro, puoi invece utilizzare l'operatore StringEqualsIfExists
.
AWS politica gestita: SimpleWorkflowFullAccess
Puoi allegare la SimpleWorkflowFullAccess
politica alle tue IAM identità.
Questa policy fornisce l'accesso completo al servizio SWF di configurazione Amazon.
Dettagli dell'autorizzazione
Questa policy include le seguenti autorizzazioni:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "swf:*" ], "Resource": "*" } ] }
Limitazioni del modello di servizio per le policy IAM
È necessario considerare i vincoli del modello di servizio durante la creazione IAM delle politiche. È possibile creare una IAM policy sintatticamente valida che rappresenti una richiesta SWF Amazon non valida; una richiesta consentita in termini di controllo degli accessi può comunque fallire perché si tratta di una richiesta non valida.
Ad esempio, la policy seguente per ListOpenWorkflowExecutions
non è consigliata:
{ "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" } } } ] }
Il modello SWF di servizio Amazon non consente l'utilizzo tagFilter
dei parametri typeFilter
and nella stessa ListOpenWorkflowExecutions
richiesta. La politica consente quindi le chiamate che il servizio rifiuterà, ValidationException
lanciandole, come richieste non valide.