Políticas do IAM do Amazon SWF - Amazon Simple Workflow Service

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 ou allow.

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 e DomainName é 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 a swf: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, como StringEquals, 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 (*) no Resource 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 valor Resource permite que o atuador acesse qualquer um dos domínios da conta nas regiões especificadas.

  • O caractere curinga (*) no valor de Action 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.1swf: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" } }