Controlar permissões para o recurso Operações em lote do S3 usando tags de trabalho - Amazon Simple Storage Service

Controlar permissões para o recurso Operações em lote do S3 usando tags de trabalho

Para ajudá-lo a gerenciar seus trabalhos de operações em lote do S3, você pode adicionar tags de trabalho. Com tags de trabalho, você pode controlar o acesso aos seus trabalhos de operações em lote e impor que as tags sejam aplicadas quando qualquer trabalho for criado.

Você pode aplicar até 50 tags de trabalho a cada trabalho de operações em lote. Isso permite que você defina políticas muito granulares restringindo o conjunto de usuários que podem editar o trabalho. As tags de trabalho podem conceder ou limitar a capacidade do usuário de cancelar um trabalho, ativar um trabalho no estado de confirmação ou alterar o nível de prioridade de um trabalho. Além disso, você pode impor que as tags sejam aplicadas a todos os novos trabalhos e especificar os pares de chave-valor permitidos para as tags. Você pode expressar todas essas condições usando a mesma linguagem de política do IAM. Consulte mais informações em Actions, resources, and condition keys for Amazon S3 na Referência de autorização do serviço.

O exemplo a seguir mostra como você pode usar tags de trabalho de operações em lote do S3 para conceder aos usuários permissão para criar e editar somente os trabalhos executados em um departamento específico (por exemplo, o departamento Finanças ou Conformidade). Você também pode atribuir trabalhos com base no estágio de desenvolvimento ao qual eles estão relacionados, como QA ou Produção.

Neste exemplo, você usa tags de trabalho do S3 Batch Operations nas políticas do AWS Identity and Access Management (IAM) para conceder aos usuários permissão para criar e editar apenas os trabalhos que estão sendo executados em seu departamento. Você atribui trabalhos com base no estágio de desenvolvimento ao qual eles estão relacionados, como QA ou Produção.

Este exemplo usa os seguintes departamentos, com cada um usando operações em lote de maneiras diferentes:

  • Finanças

  • Conformidade

  • Business Intelligence

  • Engenharia

Controlar o acesso atribuindo tags a usuários e recursos

Nesse cenário, os administradores estão usando o controle de acesso baseado em atributos (ABAC). ABAC é uma estratégia de autorização do IAM que define permissões anexando etiquetas a usuários e recursos da AWS.

Os usuários e os trabalhos recebem uma das seguintes tags de departamento:

Chave: valor
  • department : Finance

  • department : Compliance

  • department : BusinessIntelligence

  • department : Engineering

    nota

    As chaves e os valores de tags de trabalho diferenciam maiúsculas de minúsculas.

Usando a estratégia de controle de acesso ABAC, você concede a um usuário no departamento de finanças permissão para criar e gerenciar trabalhos de Operações em Lote do S3 em seu departamento associando a etiqueta department=Finance ao usuário.

Além disso, você pode anexar uma política gerenciada ao usuário do IAM que permite que qualquer usuário em sua empresa crie ou modifique trabalhos de operações em lote do S3 dentro de seus respectivos departamentos.

A política neste exemplo inclui três instruções de política:

  • A primeira instrução na política permite que o usuário crie um trabalho de operações em lote desde que a solicitação de criação de trabalho inclua uma tag de trabalho que corresponda ao respectivo departamento. Isso é expresso usando a sintaxe "${aws:PrincipalTag/department}", que é substituída pela etiqueta de departamento do usuário no momento da avaliação da política. A condição é satisfeita quando o valor fornecido para a tag de departamento na solicitação ("aws:RequestTag/department") corresponde ao departamento do usuário.

  • A segunda instrução na política permite que os usuários alterem a prioridade dos trabalhos ou atualizem o status de um trabalho, desde que o trabalho que o usuário está atualizando corresponda ao departamento do usuário.

  • A terceira instrução permite que um usuário atualize as tags de um trabalho de operações em lote a qualquer momento por meio de uma solicitação PutJobTagging, desde que (1) sua tag de departamento seja preservada e (2) o trabalho que está atualizando esteja dentro de seu departamento.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:CreateJob", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "${aws:PrincipalTag/department}" } } }, { "Effect": "Allow", "Action": [ "s3:UpdateJobPriority", "s3:UpdateJobStatus" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/department": "${aws:PrincipalTag/department}" } } }, { "Effect": "Allow", "Action": "s3:PutJobTagging", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "${aws:PrincipalTag/department}", "aws:ResourceTag/department": "${aws:PrincipalTag/department}" } } } ] }

Marcar trabalhos de operações em lote por estágio e impor limites na prioridade do trabalho

Todos os trabalhos de operações em lote do S3 têm uma prioridade numérica, que o Amazon S3 usa para decidir em que ordem executar os trabalhos. Para este exemplo, você restringe a prioridade máxima que a maioria dos usuários pode atribuir a trabalhos, com intervalos de prioridade mais altos reservados para um conjunto limitado de usuários privilegiados, da seguinte forma:

  • Intervalo de prioridade do estágio de QA (baixa): 1–100

  • Intervalo de prioridade do estágio de produção (alta): 1–300

Para fazer isso, introduza um novo conjunto de tags representando o estágio do trabalho:

Chave: valor
  • stage : QA

  • stage : Production

Criar e atualizar trabalhos de baixa prioridade em um departamento

Esta política introduz duas novas restrições à criação e atualização de trabalhos de operações em lote do S3, além da restrição baseada em departamento:

  • Ele permite que os usuários criem ou atualizem trabalhos em seu departamento com uma nova condição que requer que o trabalho inclua a tag stage=QA.

  • Ele permite que os usuários criem ou atualizem a prioridade de um trabalho até uma nova prioridade máxima de 100.

{         "Version": "2012-10-17",         "Statement": [         {         "Effect": "Allow",         "Action": "s3:CreateJob",         "Resource": "*",         "Condition": {             "StringEquals": {                 "aws:RequestTag/department": "${aws:PrincipalTag/department}",                 "aws:RequestTag/stage": "QA"             },             "NumericLessThanEquals": {                 "s3:RequestJobPriority": 100             }         }     },     {         "Effect": "Allow",         "Action": [             "s3:UpdateJobStatus"         ],         "Resource": "*",         "Condition": {             "StringEquals": {                 "aws:ResourceTag/department": "${aws:PrincipalTag/department}"             }         }     },     {         "Effect": "Allow",         "Action": "s3:UpdateJobPriority",         "Resource": "*",         "Condition": {             "StringEquals": {                 "aws:ResourceTag/department": "${aws:PrincipalTag/department}",                 "aws:ResourceTag/stage": "QA"             },             "NumericLessThanEquals": {                 "s3:RequestJobPriority": 100             }         }     },     {         "Effect": "Allow",         "Action": "s3:PutJobTagging",         "Resource": "*",         "Condition": {             "StringEquals": {                 "aws:RequestTag/department" : "${aws:PrincipalTag/department}",                 "aws:ResourceTag/department": "${aws:PrincipalTag/department}",                 "aws:RequestTag/stage": "QA",                 "aws:ResourceTag/stage": "QA"             }         }     },     {         "Effect": "Allow",         "Action": "s3:GetJobTagging",         "Resource": "*"     }     ] }

Criar e atualizar trabalhos de alta prioridade em um departamento

Um pequeno número de usuários pode exigir a capacidade de criar trabalhos de alta prioridade em QA ou Produção. Para dar suporte a essa necessidade, crie uma política gerenciada adaptada da política de baixa prioridade na seção anterior.

Essa política faz o seguinte:

  • Permite que os usuários criem ou atualizem trabalhos em seu departamento com a tag stage=QA ou stage=Production.

  • Permite que os usuários criem ou atualizem a prioridade de um trabalho até um máximo de 300.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:CreateJob", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:RequestTag/stage": [ "QA", "Production" ] }, "StringEquals": { "aws:RequestTag/department": "${aws:PrincipalTag/department}" }, "NumericLessThanEquals": { "s3:RequestJobPriority": 300 } } }, { "Effect": "Allow", "Action": [ "s3:UpdateJobStatus" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/department": "${aws:PrincipalTag/department}" } } }, { "Effect": "Allow", "Action": "s3:UpdateJobPriority", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:ResourceTag/stage": [ "QA", "Production" ] }, "StringEquals": { "aws:ResourceTag/department": "${aws:PrincipalTag/department}" }, "NumericLessThanEquals": { "s3:RequestJobPriority": 300 } } }, { "Effect": "Allow", "Action": "s3:PutJobTagging", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/department": "${aws:PrincipalTag/department}", "aws:ResourceTag/department": "${aws:PrincipalTag/department}" }, "ForAnyValue:StringEquals": { "aws:RequestTag/stage": [ "QA", "Production" ], "aws:ResourceTag/stage": [ "QA", "Production" ] } } } ] }