SWFIAMPolíticas da Amazon - 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á.

SWFIAMPolíticas da Amazon

Uma IAM política contém um ou mais Statement elementos, cada um contendo 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 SWF acesso da Amazon é baseado nos seguintes elementos:

Efeito

(Obrigatório) O efeito da instrução: deny ou allow.

nota

Você deve permitir explicitamente o acesso; 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 como Amazon Resource Name (ARN) do domínio, que tem o formato “arn:aws:swf:Region:AccountID:/domínio/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 a AmazonSWF, defina serviceID paraswf. 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 o pseudoAPI. Como IAM nega o acesso por padrão, a decisão de um tomador 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.

SWFAs ações da Amazon geralmente têm um escopo amplo, que você pode reduzir usando IAM condições. 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 a AmazonSWF, os valores são todos strings, então você restringe um parâmetro usando um operador de stringStringEquals, como, 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 APIResumo.

A seção a seguir fornece exemplos de como criar SWF políticas da Amazon. Para obter detalhes, consulte Condições de string.

Exemplos de SWF políticas da Amazon

Um fluxo de trabalho consiste em vários atores: atividades, agentes de decisão e assim por diante. Você pode controlar o acesso de cada ator anexando uma IAM política apropriada. Esta seção fornece alguns exemplos. Veja a seguir o caso mais simples:

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

Se você anexar essa política a um atuador, ele terá acesso total a todas as regiões. Você pode usar curingas para que um único valor represente vários recursos, ações ou regiões.

  • O primeiro curinga (*) no valor Resource indica que as permissões de recursos 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 curinga (*) no Action valor permite que o ator chame qualquer SWF ação da Amazon.

Para obter detalhes sobre como usar curingas, consulte Descrições de elementos

As seções a seguir mostram exemplos de políticas que concedem permissões de forma mais granular.

Permissões de domínio

Se você quiser restringir os fluxos de trabalho de um departamento a um domínio específico, pode usar algo como:

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

Se você anexar essa política a um atuador, ele poderá chamar qualquer ação, mas somente para o domínio department1.

Se quiser que um atuador tenha acesso a mais de um domínio, você poderá expressar permissão para cada domínio separadamente, da seguinte forma:

{ "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 você anexar essa política a um ator, ele poderá usar qualquer SWF ação da Amazon nos department2 domínios department1 e. Você também pode usar curingas para representar vários domínios.

APIPermissões e restrições

Você controla as ações que um atuador pode usar com o elemento Action. Opcionalmente, é possível restringir os valores de parâmetros permitidos da ação usando um elemento Condition.

Se quiser restringir um atuador apenas a determinadas ações, poderá usar algo como o seguinte:

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

Se você anexar essa política a um atuador, ele poderá chamar StartWorkflowExecution para iniciar fluxos de trabalho no domínio department2. Ele não poderá usar outras ações ou iniciar fluxos de trabalho em outros domínios.

Você pode restringir ainda mais quais fluxos de trabalho um ator pode iniciar, restringindo um ou mais dos valores de parâmetros StartWorkflowExecution, da seguinte forma:

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

Essa política restringe os parâmetros name e version da ação StartWorkflowExecution. Se você anexar a política a um atuador, ele poderá executar apenas version2 de workflow1 no domínio department1, e ambos os parâmetros deverão 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:

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

Essa política permite que um atuador especifique opcionalmente uma lista de tarefas ao iniciar uma execução de fluxo de trabalho.

É possível restringir uma lista de tags para algumas ações. Nesse caso, cada tag tem uma chave separada e, portanto, 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. No entanto, você deve ter cuidado em termos de como restringir listas de tags. Veja a seguir um exemplo de uma política que não é recomendada:

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

Essa política permite que você especifique opcionalmente some_ok_tag ou another_ok_tag. No entanto, ela restringe apenas o primeiro elemento da lista de tags. A lista pode ter elementos adicionais com valores arbitrários que seriam todos permitidos, já que essa política não aplica condições a swf:tagList.member.1, swf:tagList.member.2 e assim por diante.

Uma maneira de resolver esse problema é desativar 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.

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

APIPseudopermissões e restrições

Se você quiser restringir as decisões disponíveis ao RespondDecisionTaskCompleted, primeiro deverá permitir que o atuador chame RespondDecisionTaskCompleted. Em seguida, você pode expressar permissões para os API pseudomembros apropriados usando a mesma sintaxe do normalAPI, da seguinte forma:

{ "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 você anexar essa política a um atuador, o primeiro elemento Statement permitirá que o atuador chame RespondDecisionTaskCompleted. O segundo elemento permite que o ator use a ScheduleActivityTask decisão para orientar a Amazon SWF a agendar uma tarefa de atividade. Para permitir todas as decisões, substitua “swf:ScheduleActivityTask" por “swf: *”.

Você pode usar operadores de condição para restringir os parâmetros da mesma forma que com o normalAPI. O operador StringEquals nesse Condition permite que RespondDecisionTaskCompleted agende uma tarefa de atividade para a atividade SomeActivityType, e ele 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

Você pode anexar a SimpleWorkflowFullAccess política às suas IAM identidades.

Essa política fornece acesso total ao serviço de SWF configuração da Amazon.

Detalhes da permissão

Esta política inclui as seguintes permissões:

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

Limitações do modelo de serviço em políticas do IAM

Você deve considerar as restrições do modelo de serviço ao criar IAM políticas. É possível criar uma IAM política sintaticamente válida que represente uma solicitação inválida da SWF Amazon; uma solicitação permitida em termos de controle de acesso ainda pode falhar porque é uma solicitação inválida.

Por exemplo, a seguinte política para ListOpenWorkflowExecutions não é recomendada:

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

O modelo SWF de serviço da Amazon não permite que os tagFilter parâmetros typeFilter e sejam usados na mesma ListOpenWorkflowExecutions solicitação. Portanto, a política permite chamadas que o serviço rejeitará, lançando ValidationException como uma solicitação inválida.