

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à.

# Politiche IAM di Amazon SWF
<a name="swf-dev-iam.policies"></a>

Una policy IAM 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, vedi [The Access Policy Language](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage.html). Il controllo degli accessi di Amazon SWF si basa sui seguenti elementi:

Effetto  
(Obbligatorio) L'effetto dell'istruzione: `deny` o `allow`.  
È necessario consentire esplicitamente l'accesso; IAM nega l'accesso per impostazione predefinita.

Risorsa  
(Obbligatoria) 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 «{{Region}}arn:aws:swf::: /domain/». {{AccountID}} {{DomainName}} {{Region}}è la AWS regione, è l'ID dell'account senza {{AccountID}} trattini ed è il nome di dominio. {{DomainName}}

Azione  
(Obbligatorio) L'azione a cui si applica l'istruzione, a cui si fa riferimento utilizzando il seguente formato:{{serviceId}}:{{action}}. Per Amazon SWF, imposta su{{serviceID}}. `swf` Ad esempio, `swf:StartWorkflowExecution` si riferisce all'[StartWorkflowExecution](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_StartWorkflowExecution.html)azione e viene utilizzato per controllare quali utenti sono autorizzati ad avviare flussi di lavoro.  
 Se concedi l'autorizzazione all'uso [RespondDecisionTaskCompleted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RespondDecisionTaskCompleted.html), puoi anche controllare l'accesso all'elenco di decisioni incluso utilizzando `Action` to express le autorizzazioni per la pseudo API. Poiché IAM nega l'accesso per impostazione predefinita, la decisione di chi decide 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.  
Le azioni di Amazon SWF hanno spesso un ambito ampio, che puoi ridurre utilizzando le condizioni IAM. Ad esempio, per limitare gli elenchi di attività a cui l'[PollForActivityTask](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_PollForActivityTask.html)azione può accedere, includi a `Condition` e utilizza la `swf: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.
Per Amazon SWF, i valori sono tutte 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 come `StringEquals` 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 [RespondDecisionTaskCompleted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RespondDecisionTaskCompleted.html)decisioni, 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 [Riepilogo delle API](swf-dev-iam.api.md).

La sezione seguente fornisce esempi di come creare policy di Amazon SWF. Per informazioni dettagliate, consulta la sezione relativa alle [condizioni di stringa](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#AccessPolicyLanguage_ConditionType). 

## Scrittura di politiche per Amazon SWF
<a name="swf-dev-iam.policies.examples"></a>

Un flusso di lavoro è composto da più *attori*: attività, decisori e così via. Puoi controllare l'accesso per ogni attore allegando una policy IAM appropriata.

Con la seguente azione, all'attore verrà concesso l'accesso completo all'account in tutte le regioni:
+ **Operazione:** `swf:*`
+ **Risorsa:** `arn:aws:swf:*:123456789012:/domain/*`

 Puoi utilizzare i caratteri jolly per rappresentare più risorse, operazioni o regioni con un singolo valore.
+ **Il primo carattere jolly (`*`) nel `Resource` valore indica che le autorizzazioni delle risorse si applicano 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 valore `Resource` consente all'attore di accedere a qualsiasi dominio dell'account nelle regioni specificate.
+ Il carattere jolly (`*`) nel `Action` valore consente all'attore di richiamare qualsiasi azione Amazon SWF. 

Per informazioni dettagliate su come utilizzare i caratteri jolly, consulta la sezione relativa alle [descrizioni degli elementi](https://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html).

### Autorizzazioni di dominio
<a name="swf-dev-iam.policies.examples.domain"></a>

Per limitare i flussi di lavoro di un reparto a un determinato dominio, puoi concedere un'autorizzazione che consenta a un attore di eseguire qualsiasi azione, ma solo per un reparto specifico. 

Per concedere a un attore l'accesso a più di un dominio, esprimi l'autorizzazione per ogni dominio sotto forma di un elenco di dichiarazioni:
+ **Operazione:** `swf:*`
+ **Risorsa:** `arn:aws:swf:*:123456789012:/domain/department1` 
+ **Risorsa:** `arn:aws:swf:*:123456789012:/domain/department2` 

Puoi consentire a un attore di utilizzare qualsiasi azione Amazon SWF nei domini `department1` and`department2`. A volte, puoi anche utilizzare i caratteri jolly per rappresentare più domini. 

### Vincoli e autorizzazioni dell'API
<a name="swf-dev-iam.policies.examples.api"></a>

Puoi controllare **le azioni** che un attore può utilizzare specificando l'azione nell'elemento. `Action` 

Con l'azione seguente, un attore può chiamare solo `StartWorkflowExecution` per avviare flussi di lavoro. Non può utilizzare altre azioni.
+ **Operazione:** `swf:StartWorkflowExecution` 

**Condizioni**  
Facoltativamente, puoi limitare i valori dei parametri consentiti dell'azione utilizzando un elemento. `Condition`

Per limitare i flussi di lavoro che un attore può avviare, vincola uno o più valori dei `StartWorkflowExecution` parametri nel modo seguente:

```
"Condition" : {
   "StringEquals" : { 
      "swf:workflowType.name" : "workflow1",
      "swf:workflowType.version" : "version2" 
    }
}
```

Un attore con i vincoli precedenti può eseguire solo `version2` di `workflow1` 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:

```
"Condition" : {
   "StringEqualsIfExists" : { "swf:taskList.name" : "task_list_name" }
}
```

Un attore con la politica precedente può facoltativamente specificare un elenco di attività quando avvia l'esecuzione di un flusso di lavoro.

Puoi applicare un vincolo a un elenco di tag per alcune operazioni. Ogni tag ha una chiave separata, che puoi usare `swf:tagList.member.0` per vincolare il primo tag dell'elenco, `swf:tagList.member.1` per vincolare il secondo tag dell'elenco e così via, fino a un massimo di 5. 

Devi stare attento a come vincoli gli elenchi di tag. Ad esempio, la seguente condizione ***non*** è consigliata. 

La seguente condizione **non** è consigliata perché consente di specificare facoltativamente una delle due `some_ok_tag` o`another_ok_tag`. Tuttavia, la Condizione limita solo il **primo elemento dell'elenco** dei tag. L'elenco potrebbe contenere elementi aggiuntivi con valori arbitrari, tutti consentiti perché la condizione non applica alcuna condizione a `swf:tagList.member.1``swf:tagList.member.2`, e così via.

```
// Example to illustrate an insecure Condition
"Condition" : {
   "StringEqualsIfExists" : {
      "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag"
   }
}
```

Un modo per risolvere il problema precedente consiste nel non consentire l'uso 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.

```
"Condition" : {
   "StringEqualsIfExists" : {
      "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag"
    },
    "Null" : { "swf:tagList.member.1" : "true" }
}
```

### Vincoli e autorizzazioni della pseudo API
<a name="pseudo-api-permissions-constraints"></a>

Per limitare le decisioni disponibili`RespondDecisionTaskCompleted`, devi prima consentire all'attore di chiamare`RespondDecisionTaskCompleted`. Quindi esprimete le autorizzazioni per i membri della pseudo API appropriati utilizzando la stessa sintassi dell'API normale, come segue:
+ **Dichiarazione 1**

  **Risorsa:** `arn:aws:swf:*:123456789012:/domain/*` 

  **Operazione:** `swf:RespondDecisionTaskCompleted` 
+ **Dichiarazione 2**

  **Risorsa:** `*` 

  **Operazione:** `swf:ScheduleActivityTask` 

  **Condizione**: ` "StringEquals" : { "swf:activityType.name" : "SomeActivityType" }` 

La prima `Statement` consente all'attore di chiamare`RespondDecisionTaskCompleted`. La seconda dichiarazione consente all'attore di utilizzare la `ScheduleActivityTask` decisione di indirizzare Amazon SWF a pianificare un'attività. Per consentire tutte le decisioni, sostituisci «swf:ScheduleActivityTask" con «swf: \*».

Per applicare un vincolo ai parametri, puoi utilizzare gli operatori di condizione, esattamente come con l'API classica. L'`StringEquals`operatore dell'esempio precedente `Condition` consente di `RespondDecisionTaskCompleted` pianificare un'attività per l'`SomeActivityType`attività e deve pianificare tale attività. Se intendi consentire a `RespondDecisionTaskCompleted` di utilizzare facoltativamente un valore di parametro, puoi invece utilizzare l'operatore `StringEqualsIfExists`.

## AWS politica gestita: SimpleWorkflowFullAccess
<a name="swf-full-accss-mngd-policy"></a>

È possibile allegare la policy `SimpleWorkflowFullAccess` alle identità IAM.

Questa policy fornisce l'accesso completo al servizio di configurazione Amazon SWF.

## Limitazioni del modello di servizio sulle politiche IAM
<a name="swf-dev-iam.policies.allowed"></a>

È necessario considerare i vincoli del modello di servizio durante la creazione delle policy IAM. È possibile creare una policy IAM sintatticamente valida che rappresenti una richiesta Amazon SWF non valida; una richiesta consentita in termini di controllo degli accessi può comunque fallire perché non è valida. 

Ad esempio, il modello di servizio Amazon SWF **non** consente l'utilizzo `tagFilter` dei parametri `typeFilter` and nella stessa `[ListOpenWorkflowExecutions](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ListOpenWorkflowExecutions.html)` richiesta. La condizione seguente consentirebbe le chiamate che il servizio rifiuterà, `ValidationException` lanciandole, come richieste non valide:

```
"Condition" : {
   "StringEquals" : { 
      "swf:typeFilter.name" : "workflow_name",
      "swf:typeFilter.version" : "workflow_version",
      "swf:tagFilter.tag" : "some_tag" 
    }
}
```