

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 para acesso baseado em etiquetas a clusters e Cadernos do EMR
<a name="emr-fine-grained-cluster-access"></a>

É possível aplicar condições em sua política baseada em identidade para controlar o acesso aos clusters e blocos de anotações do EMR baseados em tags.

Para obter mais informações sobre como adicionar tags a clusters, consulte [Marcar clusters do EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html). 

Os exemplos a seguir demonstram diferentes cenários e maneiras de usar operadores de condição com chaves de condição do Amazon EMR. Estas instruções de política do IAM são destinadas somente para fins de demonstração e não devem ser usadas em ambientes de produção. Há várias maneiras de combinar declarações de políticas para conceder e negar permissões de acordo com seus requisitos. Para obter mais informações sobre como planejar e testar políticas do IAM, consulte o [Guia do usuário do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

**Importante**  
Recusar, explicitamente, permissões para ações de uso de tags é uma consideração importante. Isso evita que os usuários façam a marcação de um recurso e, assim, concedam a si mesmos permissões que você não pretendia conceder. Se você não negar as ações de marcação de um recurso, o usuário poderá modificar as etiquetas e contornar a intenção das políticas baseadas em etiquetas.

## Exemplo de instruções de políticas baseadas em identidade para clusters
<a name="emr-cluster-access-resourcetag"></a>

Os exemplos a seguir demonstram a políticas de permissões baseadas em identidade que são usadas para controlar as ações permitidas com clusters do EMR.

**Importante**  
A ação `ModifyInstanceGroup` do Amazon EMR não exige que você especifique um ID de cluster. Por isso, negar essa ação com base em etiquetas de cluster requer mais atenção. Para obter mais informações, consulte [Negando a ModifyInstanceGroup ação no Amazon EMR](emr-cluster-deny-modifyinstancegroup.md).

**Topics**
+ [Permitir ações somente em clusters com determinados valores de etiqueta](#emr-cluster-access-example-tagvalue)
+ [Exigir a marcação do cluster quando um cluster é criado](#emr-cluster-access-example-require-tagging)
+ [Permitir ações em clusters com uma etiqueta específica, independentemente do valor da etiqueta](#emr-cluster-access-example-tag)

### Permitir ações somente em clusters com determinados valores de etiqueta
<a name="emr-cluster-access-example-tagvalue"></a>

Os exemplos a seguir demonstram uma política que permite ao usuário executar ações com base na etiqueta de cluster `department` com o valor `dev` e também permite que o usuário atribua etiquetas a clusters com a mesma etiqueta. O último exemplo de política demonstra como negar privilégios para atribuir tags a clusters do EMR com qualquer coisa, menos a mesma tag.

No exemplo de política a seguir, o operador de condição `StringEquals` tenta corresponder `dev` com o valor da tag `department`. Se a tag `department` ainda não tiver sido adicionada ao cluster ou não contiver o valor `dev`, a política não se aplicará e as ações não serão permitidas por essa política. Se nenhuma outra declaração de política permitir as ações, o usuário poderá somente trabalhar com clusters que tenham essa tag com esse valor.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Stmt12345678901234",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:ListSteps",
        "elasticmapreduce:TerminateJobFlows",
        "elasticmapreduce:SetTerminationProtection",
        "elasticmapreduce:ListInstances",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ListBootstrapActions",
        "elasticmapreduce:DescribeStep"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/department": "dev"
        }
      }
    }
  ]
}
```

------

Você também pode especificar vários valores de tag usando um operador de condição. Por exemplo, para permitir todas as ações em clusters em que a tag `department` contenha o valor `dev` ou `test`, você poderia substituir o bloco condicional no exemplo anterior com o seguinte. 

```
            "Condition": {
              "StringEquals": {
                "elasticmapreduce:ResourceTag/department":["dev", "test"]
              }
            }
```

### Exigir a marcação do cluster quando um cluster é criado
<a name="emr-cluster-access-example-require-tagging"></a>

Como no exemplo anterior, o exemplo de política a seguir procura a mesma etiqueta correspondente: o valor `dev` para a etiqueta `department`. Mas neste exemplo, a chave de condição `RequestTag` especifica que a política se aplica durante a criação da etiqueta. Portanto, é necessário criar um cluster com uma etiqueta que corresponda ao valor especificado. 

Para criar um cluster com uma etiqueta, também é necessário ter permissão para a ação `elasticmapredue:AddTags`. Para essa instrução, a chave de condição `elasticmapreduce:ResourceTag` garante que o IAM conceda acesso somente aos recursos da etiqueta com o valor `dev` na etiqueta `department`. O elemento `Resource` é usado para limitar essa permissão aos recursos do cluster.

Para os `PassRole` recursos, você deve fornecer o ID ou alias da AWS conta, o nome da função de serviço na `PassRoleForEMR` declaração e o nome do perfil da instância na `PassRoleForEC2` declaração. Para obter mais informações sobre o formato ARN do IAM, consulte [IAM ARNs no Guia do](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) *usuário do IAM*. 

Para obter mais informações sobre a correspondência de valores de chave de etiqueta, consulte [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag) no *Guia do usuário do IAM*.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "RunJobFlowExplicitlyWithTag",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:RunJobFlow"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/department": "dev"
        }
      }
    },
    {
      "Sid": "AddTagsForDevClusters",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:AddTags"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:*:*:cluster/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/department": "dev"
        }
      }
    },
    {
      "Sid": "PassRoleForEMR",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/Role-Name-With-Path"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "elasticmapreduce.amazonaws.com*"
        }
      }
    },
    {
      "Sid": "PassRoleForEC2",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/Role-Name-With-Path"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "ec2.amazonaws.com*"
        }
      }
    }
  ]
}
```

------

### Permitir ações em clusters com uma etiqueta específica, independentemente do valor da etiqueta
<a name="emr-cluster-access-example-tag"></a>

Você também pode permitir ações somente em clusters que tenham uma determinada tag, independentemente do valor da tag. Para fazer isso, você pode usar o operador `Null`. Para obter mais informações, consulte [Operador de condição para verificar a existência de chaves de condição](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_Null) no *Guia do usuário do IAM*. Por exemplo, para permitir ações somente em clusters do EMR que tenham a tag `department`, independentemente do valor que ela contenha, você poderia substituir o bloco condicional no exemplo anterior pelo seguinte. O operador `Null` procura a presença da tag `department` em um cluster do EMR. Se a tag existir, a instrução `Null` será avaliada como falsa, correspondendo à condição especificada nesta declaração de política e as ações apropriadas serão permitidas. 

```
1. "Condition": {
2.   "Null": {
3.     "elasticmapreduce:ResourceTag/department":"false"
4.   }
5. }
```

A declaração de política a seguir permite que um usuário crie um cluster do EMR somente se o cluster tiver uma tag `department`, que possa conter qualquer valor. Para o `PassRole` recurso, você precisa fornecer o ID ou alias da AWS conta e o nome da função de serviço. Para obter mais informações sobre o formato ARN do IAM, consulte [IAM ARNs no Guia do](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) *usuário do IAM*.

Para obter mais informações sobre como especificar o operador de condição nulo (“false”), consulte [Operador de condição para verificar a existência de chaves de condição](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) no *Guia do usuário do IAM*.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CreateClusterTagNullCondition",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:RunJobFlow"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "Null": {
          "aws:RequestTag/department": "false"
        }
      }
    },
    {
      "Sid": "AddTagsNullCondition",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:AddTags"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:*:*:cluster/*"
      ],
      "Condition": {
        "Null": {
          "elasticmapreduce:ResourceTag/department": "false"
        }
      }
    },
    {
      "Sid": "PassRoleForElasticMapReduce",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/Role-Name-With-Path"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "elasticmapreduce.amazonaws.com*"
        }
      }
    },
    {
      "Sid": "PassRoleForEC2",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/Role-Name-With-Path"
      ],
      "Condition": {
        "StringLike": {
          "iam:PassedToService": "ec2.amazonaws.com*"
        }
      }
    }
  ]
}
```

------

## Exemplo de instruções de políticas baseadas em identidade para Cadernos do EMR
<a name="emr-managed-notebooks-tags-examples"></a>

Os exemplos de instruções de políticas do IAM nesta seção demonstram cenários comuns para usar chaves a fim de limitar as ações permitidas usando Cadernos do EMR. Desde que nenhuma outra política associada à entidade principal (usuário) permita as ações, as chaves de contexto de condição limitam as ações permitidas conforme indicado.

**Example : permitir acesso somente aos Cadernos do EMR que o usuário cria com base na marcação**  
A instrução de política de exemplo a seguir, quando anexada a um perfil ou usuário, permite que o usuário trabalhe apenas com cadernos criados por ele. Esta declaração de política usa a tag padrão aplicada quando um bloco de anotações é criado.  
No exemplo, o operador de condição `StringEquals` tenta combinar uma variável que representa o ID do usuário atual (`{aws:userId}`) com o valor de etiqueta `creatorUserID`. Se a tag `creatorUserID` ainda não tiver sido adicionada ao bloco de anotações ou não contiver o valor do ID do usuário atual, a política não se aplicará e as ações não serão permitidas por essa política. Se nenhuma outra declaração de política permitir as ações, o usuário só poderá trabalhar com blocos de anotações que tenham essa tag com esse valor.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:DescribeEditor",
        "elasticmapreduce:StartEditor",
        "elasticmapreduce:StopEditor",
        "elasticmapreduce:DeleteEditor",
        "elasticmapreduce:OpenEditorInConsole"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}"
        }
      },
      "Sid": "AllowELASTICMAPREDUCEDescribeeditor"
    }
  ]
}
```

**Example –Exigir marcação de caderno quando um caderno é criado**  
Neste exemplo, a chave de contexto `RequestTag` é usada. A ação `CreateEditor` será permitida somente se o usuário não alterar nem excluir a tag `creatorUserID` é que é adicionada por padrão. A variável \$1\$1aws:userId\$1 especifica o ID de usuário do usuário atualmente ativo, que é o valor padrão da etiqueta.  
A declaração de política pode ser usada para ajudar a garantir que os usuários não removam a tag `createUserId` tag nem alterem seu valor.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:CreateEditor"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:RequestTag/creatorUserId": "${aws:userid}"
        }
      },
      "Sid": "AllowELASTICMAPREDUCECreateeditor"
    }
  ]
}
```
Este exemplo requer que o usuário crie o cluster com uma tag com a string de chave `dept` e um valor definido como um dos seguintes: `datascience`, `analytics`, `operations`.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:CreateEditor"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:RequestTag/dept": [
            "datascience",
            "analytics",
            "operations"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCECreateeditor"
    }
  ]
}
```

**Example –Limitar a criação do caderno para clusters marcados e exigir etiquetas de caderno**  
Este exemplo permite a criação do bloco de anotações somente se o bloco de anotações for criado com uma tag que tenha a string de chave `owner` definida como um dos valores especificados. Além disso, o bloco de anotações poderá ser criado somente se o cluster tiver uma tag com a string de chave `department` definida como um dos valores especificados.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:CreateEditor"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:RequestTag/owner": [
            "owner1",
            "owner2",
            "owner3"
          ],
          "elasticmapreduce:ResourceTag/department": [
            "dep1",
            "dep3"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCECreateeditor"
    }
  ]
}
```

**Example –Limitar a capacidade de iniciar um caderno com base em etiquetas**  
Este exemplo limita a capacidade de iniciar blocos de anotações àqueles que tenham uma tag com a string de chave `owner` definida como um dos valores especificados. Como o elemento `Resource` é usado para especificar apenas o `editor`, a condição não se aplica ao cluster e não precisa ser marcado.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:StartEditor"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticmapreduce:*:123456789012:editor/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/owner": [
            "owner1",
            "owner2"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCEStarteditor"
    }
  ]
}
```
Este exemplo é semelhante ao exposto acima. No entanto, o limite se aplica apenas a clusters com tags, e não a blocos de anotações.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:StartEditor"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticmapreduce:*:123456789012:cluster/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/department": [
            "dep1",
            "dep3"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCEStarteditor"
    }
  ]
}
```
Este exemplo usa um conjunto diferente de tags de cluster e bloco de anotações. Ele permite que um bloco de anotações seja iniciado somente se:  
+ O bloco de anotações tiver uma tag com a string de chave `owner` definida como qualquer um dos valores especificados

  —e—
+ O cluster tiver uma tag com a string de chave `department` definida como qualquer um dos valores especificados  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:StartEditor"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticmapreduce:*:123456789012:editor/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/owner": [
            "user1",
            "user2"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCEStarteditorByOwner"
    },
    {
      "Action": [
        "elasticmapreduce:StartEditor"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticmapreduce:*:123456789012:cluster/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/department": [
            "datascience",
            "analytics"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCEStarteditorByDepartment"
    }
  ]
}
```

**Example –Limitar a capacidade de abrir o editor de caderno com base em etiquetas**  
Este exemplo permite que o editor de blocos de anotações seja aberto somente se:  
+ O bloco de anotações tiver uma tag com a string de chave `owner` definida como qualquer um dos valores especificados.

  —e—
+ O cluster tiver uma tag com a string de chave `department` definida como qualquer um dos valores especificados.  
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:OpenEditorInConsole"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticmapreduce:*:123456789012:editor/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/owner": [
            "user1",
            "user2"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCEOpeneditorconsoleByOwner"
    },
    {
      "Action": [
        "elasticmapreduce:OpenEditorInConsole"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticmapreduce:*:123456789012:cluster/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/department": [
            "datascience",
            "analytics"
          ]
        }
      },
      "Sid": "AllowELASTICMAPREDUCEOpeneditorconsoleByDepartment"
    }
  ]
}
```