As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Políticas do IAM do Amazon SWF
Uma política do IAM contém um ou mais elementos Statement
, cada um dos quais contém um conjunto de elementos que definem a política. Para obter uma lista completa de elementos e uma discussão geral sobre como estruturar políticas, consulte A linguagem da política de acesso. O controle de acesso do Amazon SWF é baseado nos seguintes elementos:
- Efeito
-
(Obrigatório) O efeito da instrução:
deny
ouallow
.nota
Você deve permitir explicitamente o acesso; o IAM nega o acesso por padrão.
- Recurso
-
(Obrigatório) O recurso — uma entidade em um AWS serviço com a qual o usuário pode interagir — ao qual a declaração se aplica.
Você pode expressar permissões de recursos apenas para domínios. Por exemplo, uma política pode permitir acesso a apenas certos domínios na sua conta. Para expressar permissões para um domínio,
Resource
defina o Amazon Resource Name (ARN) do domínio, que tem o formato “arn:aws:swf::: /domain/”.Region
AccountID
DomainName
Region
é a AWS região,AccountID
é o ID da conta sem traços eDomainName
é o nome do domínio. - Ação
-
(Obrigatório) A ação à qual a declaração se aplica, à qual você se refere usando o seguinte formato:
serviceId
:action
. Para Amazon SWF,serviceID
defina como.swf
Por exemplo,swf:StartWorkflowExecution
refere-se à StartWorkflowExecutionação e é usado para controlar quais usuários têm permissão para iniciar fluxos de trabalho.Se você conceder permissão de uso RespondDecisionTaskCompleted, também poderá controlar o acesso à lista de decisões incluída usando
Action
para expressar permissões para a pseudo-API. Como o IAM nega o acesso por padrão, a decisão de um agente de decisão deve ser explicitamente permitida ou não será aceita. Você pode usar um valor*
para permitir todas as decisões. - Condição
-
(Opcional) Expressa uma restrição em um ou mais dos parâmetros de uma ação, o que restringe os valores permitidos.
As ações do Amazon SWF geralmente têm um escopo amplo, que você pode reduzir usando as condições do IAM. Por exemplo, para limitar quais listas de tarefas a PollForActivityTaskação pode acessar, você inclui um
Condition
e usa aswf:taskList.name
chave para especificar as listas permitidas.É possível expressar restrições para as seguintes entidades.
-
O tipo de fluxo de trabalho. O nome e a versão têm chaves separadas.
-
O tipo de atividade. O nome e a versão têm chaves separadas.
-
Listas de tarefas.
-
Tags. É possível especificar várias tags para algumas ações. Nesse caso, cada tag tem uma chave separada.
nota
Para o Amazon SWF, os valores são todos strings, portanto, você restringe um parâmetro usando um operador de string, como
StringEquals
, que restringe o parâmetro a uma string especificada. No entanto, os operadores de comparação de string regulares, comoStringEquals
, exigem que todas as solicitações incluam o parâmetro. Se você não incluir o parâmetro explicitamente, e não houver um valor padrão, como a lista de tarefas padrão fornecida durante o registro de tipo, o acesso será negado.Muitas vezes, é útil tratar condições como opcionais, para que você possa chamar uma ação sem necessariamente incluir o parâmetro associado. Por exemplo, talvez você queira permitir que um decisor especifique um conjunto de RespondDecisionTaskCompleteddecisões, mas também permita que ele especifique somente uma delas para qualquer chamada específica. Nesse caso, você restringe os parâmetros apropriados usando um operador
StringEqualsIfExists
, o que permite o acesso se o parâmetro atender à condição, mas não nega o acesso se o parâmetro estiver ausente.Para obter uma lista completa de parâmetros restritivos e as chaves associadas, consulte Resumo de APIs.
-
A seção a seguir fornece exemplos de como estruturar políticas do Amazon SWF. Para obter detalhes, consulte Condições de string.
Escrevendo políticas para o Amazon SWF
Um fluxo de trabalho consiste em vários atores — atividades, decisores e assim por diante. Você pode controlar o acesso de cada ator anexando uma política do IAM apropriada.
Com a ação a seguir, o ator terá acesso total à conta em todas as regiões:
Ação:
swf:*
Recurso:
arn:aws:swf:*:123456789012:/domain/*
Você pode usar curingas para que um único valor represente vários recursos, ações ou regiões.
-
O primeiro caractere curinga (
*
) noResource
valor indica que as permissões do recurso se aplicam a todas as regiões.Para restringir as permissões a uma única região, substitua o curinga pela string da região apropriada, como us-east-1.
-
O segundo curinga (
*
) no valorResource
permite que o atuador acesse qualquer um dos domínios da conta nas regiões especificadas. -
O caractere curinga (
*
) no valor deAction
permite que o ator chame qualquer ação do Amazon SWF.
Para obter detalhes sobre como usar curingas, consulte Descrições de elementos
Permissões de domínio
Para restringir os fluxos de trabalho de um departamento a um domínio específico, você pode conceder uma permissão que permita que um ator execute qualquer ação, mas somente para um departamento específico.
Para conceder a um ator acesso a mais de um domínio, expresse a permissão para cada domínio como uma lista de declarações:
-
Ação:
swf:*
-
Recurso:
arn:aws:swf:*:123456789012:/domain/department1
-
Recurso:
arn:aws:swf:*:123456789012:/domain/department2
Você pode permitir que um ator use qualquer ação do Amazon SWF nos domínios department1
e. department2
Você também pode usar curingas para representar vários domínios.
Permissões e restrições da API
Você controla quais ações um ator pode usar especificando a ação no Action
elemento.
Com a ação a seguir, um ator só pode ligar StartWorkflowExecution
para iniciar fluxos de trabalho. Ele não pode usar nenhuma outra ação.
-
Ação:
swf:StartWorkflowExecution
Condições
Opcionalmente, você pode restringir os valores de parâmetros permitidos da ação usando um elemento. Condition
Para restringir quais fluxos de trabalho um ator pode iniciar, restrinja um ou mais dos valores dos StartWorkflowExecution
parâmetros, da seguinte forma:
"Condition" : { "StringEquals" : { "swf:workflowType.name" : "workflow1", "swf:workflowType.version" : "version2" } }
Um ator com as restrições anteriores só version2
pode ser executado workflow1
e ambos os parâmetros devem ser incluídos na solicitação.
Você pode restringir um parâmetro sem exigir que ele seja incluído em uma solicitação, usando um operador StringEqualsIfExists
, da seguinte maneira:
"Condition" : { "StringEqualsIfExists" : { "swf:taskList.name" : "task_list_name" } }
Um ator com a política anterior pode, opcionalmente, especificar uma lista de tarefas ao iniciar a execução de um fluxo de trabalho.
É possível restringir uma lista de tags para algumas ações. Cada tag tem uma chave separada, então você usa swf:tagList.member.0
para restringir a primeira tag na lista, swf:tagList.member.1
para restringir a segunda tag na lista e assim por diante, até um máximo de 5.
Você deve ter cuidado ao restringir as listas de tags. Por exemplo, a condição a seguir não é recomendada.
A condição a seguir não é recomendada porque permite que você opcionalmente especifique um some_ok_tag
ouanother_ok_tag
. No entanto, a Condição restringe somente o primeiro elemento da lista de tags. A lista pode ter elementos adicionais com valores arbitrários que seriam todos permitidos porque a condição não aplica nenhuma condição a swf:tagList.member.1
swf:tagList.member.2
, e assim por diante.
// Example to illustrate an insecure Condition "Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" } }
Uma forma de resolver o problema anterior é proibir o uso de listas de tags.
A seguinte política garante que somente some_ok_tag
ou another_ok_tag
seja permitido, exigindo que a lista tenha apenas um elemento.
"Condition" : { "StringEqualsIfExists" : { "swf:tagList.member.0" : "some_ok_tag", "another_ok_tag" }, "Null" : { "swf:tagList.member.1" : "true" } }
Permissões e restrições da pseudo API
Para restringir as decisões disponíveisRespondDecisionTaskCompleted
, primeiro você deve permitir que o ator ligueRespondDecisionTaskCompleted
. Em seguida, você expressa as permissões para os membros apropriados da pseudo-API usando a mesma sintaxe da API normal, da seguinte forma:
-
Declaração 1
Recurso:
arn:aws:swf:*:123456789012:/domain/*
Ação:
swf:RespondDecisionTaskCompleted
-
Declaração 2
Recurso:
*
Ação:
swf:ScheduleActivityTask
Condição:
"StringEquals" : { "swf:activityType.name" : "SomeActivityType" }
O primeiro Statement
permite que o ator ligueRespondDecisionTaskCompleted
. A segunda declaração permite que o ator use a ScheduleActivityTask
decisão para orientar o Amazon SWF a programar uma tarefa de atividade. Para permitir todas as decisões, substitua “swf:ScheduleActivityTask" por “swf: *”.
É possível operadores de condição para restringir parâmetros, como é o caso com a API regular. O StringEquals
operador no exemplo anterior Condition
permite RespondDecisionTaskCompleted
agendar uma tarefa de atividade para a SomeActivityType
atividade e deve agendar essa tarefa. Se você quiser permitir que RespondDecisionTaskCompleted
use um valor de parâmetro, mas não exige que ele faça isso, poderá usar o operador StringEqualsIfExists
.
AWS política gerenciada: SimpleWorkflowFullAccess
É possível anexar a política SimpleWorkflowFullAccess
às identidades do IAM.
Essa política fornece acesso total ao serviço de configuração do Amazon SWF.
Limitações do modelo de serviço nas políticas do IAM
Você deve considerar as restrições do modelo de serviço ao criar políticas do IAM. É possível criar uma política do IAM sintaticamente válida que represente uma solicitação inválida do Amazon SWF; uma solicitação permitida em termos de controle de acesso ainda pode falhar por ser uma solicitação inválida.
Por exemplo, o modelo de serviço Amazon SWF não permite que os tagFilter
parâmetros typeFilter
e sejam usados na mesma ListOpenWorkflowExecutions
solicitação. A condição a seguir permitiria chamadas que o serviço rejeitaria, lançando, como uma solicitação inválidaValidationException
:
"Condition" : { "StringEquals" : { "swf:typeFilter.name" : "workflow_name", "swf:typeFilter.version" : "workflow_version", "swf:tagFilter.tag" : "some_tag" } }