

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Políticas de IAM para el acceso basado en etiquetas para clústeres y cuadernos de EMR
<a name="emr-fine-grained-cluster-access"></a>

Puede utilizar condiciones en su política basada en identidades para controlar el acceso a clústeres y blocs de notas de EMR basándose en etiquetas.

Para obtener más información sobre la adición de etiquetas a los clústeres de EMR, consulte [Etiquetado de clústeres de Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html). 

Los siguientes ejemplos muestran distintos supuestos y formas de utilizar los operadores de condición con las claves de condición de Amazon EMR. Estas instrucciones de política de IAM tienen fines demostrativos y no deben utilizarse en entornos de producción. Existen varias maneras de combinar las instrucciones de políticas para conceder y denegar permisos de acuerdo con sus requisitos. Para obtener más información sobre la planificación y las pruebas de políticas de IAM, consulte la [Guía del usuario de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

**importante**  
La denegación de permisos explícita para acciones de etiquetado de acciones es un factor importante. Esto impide que los usuarios etiqueten un recurso y, de esta forma, se concedan a sí mismos permisos que usted no tenía previsto conceder. Si no deniega las acciones de etiquetado de un recurso, el usuario puede modificar las etiquetas y eludir la intención de las políticas basadas en etiquetas.

## Ejemplo de instrucciones de políticas basadas en identidades para clústeres
<a name="emr-cluster-access-resourcetag"></a>

Los ejemplos que se muestran a continuación muestran las políticas de permisos basadas en identidades que se utilizan para controlar las acciones que se permiten con clústeres de EMR.

**importante**  
La acción `ModifyInstanceGroup` en Amazon EMR no requiere que especifique un ID de clúster. Por ese motivo, denegar esta acción en función de las etiquetas de clúster requiere una consideración adicional. Para obtener más información, consulte [Denegar la ModifyInstanceGroup acción en Amazon EMR](emr-cluster-deny-modifyinstancegroup.md).

**Topics**
+ [Permitir acciones solo en clústeres con valores de etiqueta específicos](#emr-cluster-access-example-tagvalue)
+ [Etiquetado obligatorio de un clúster al crear un clúster](#emr-cluster-access-example-require-tagging)
+ [Permitir acciones en clústeres con una etiqueta específica, con independencia del valor de su etiqueta](#emr-cluster-access-example-tag)

### Permitir acciones solo en clústeres con valores de etiqueta específicos
<a name="emr-cluster-access-example-tagvalue"></a>

Los ejemplos que aparecen a continuación muestran una política que permite a un usuario realizar acciones en función de la etiqueta de clúster `department` con el valor `dev` y también permite a un usuario etiquetar clústeres con la misma etiqueta. El ejemplo de política muestra cómo denegar los privilegios para etiquetar clústeres de EMR con cualquier otra cosa excepto la misma etiqueta.

En el siguiente ejemplo de política, la condición `StringEquals` intenta hacer coincidir `dev` con el valor de la etiqueta `department`. Si la etiqueta `department` no se ha añadido al clúster o no contiene el valor `dev`, la política no se aplica y esta política no permite las acciones. Si no hay otras instrucciones de política que permitan las acciones, el usuario solo puede trabajar con clústeres que tenga esta etiqueta con este 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"
        }
      }
    }
  ]
}
```

------

También puede especificar varios valores de etiqueta utilizando un operador de condición. Por ejemplo, a fin de permitir que todas las acciones en clústeres donde la etiqueta `department` contiene el valor `dev` o `test`, podría sustituir el bloque de condición en el ejemplo anterior por los siguientes. 

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

### Etiquetado obligatorio de un clúster al crear un clúster
<a name="emr-cluster-access-example-require-tagging"></a>

Como en el ejemplo anterior, la siguiente política de ejemplo busca la misma etiqueta coincidente: el valor `dev` para la etiqueta `department`. Sin embargo, en este ejemplo, la clave de condición `RequestTag` especifica que la política se aplica durante la creación de la etiqueta. Por lo tanto, debe crear un clúster con una etiqueta que coincida con el valor especificado. 

Para crear un clúster con una etiqueta, también debe tener permiso para realizar la acción `elasticmapredue:AddTags`. En esta instrucción, la clave de condición `elasticmapreduce:ResourceTag` garantiza que IAM solo conceda acceso a los recursos de etiquetas con el valor `dev` en la etiqueta `department`. El elemento `Resource` se utiliza para limitar este permiso a los recursos del clúster.

En el caso de `PassRole` los recursos, debe proporcionar el identificador o alias de la AWS cuenta, el nombre de la función de servicio en la `PassRoleForEMR` declaración y el nombre del perfil de la instancia en la `PassRoleForEC2` declaración. Para obtener más información sobre el formato ARN de IAM, [consulte](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) IAM en la Guía *del* usuario de ARNs IAM. 

Para obtener más información sobre cómo hacer coincidir los valores de las claves 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) en la *Guía del usuario de 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 acciones en clústeres con una etiqueta específica, con independencia del valor de su etiqueta
<a name="emr-cluster-access-example-tag"></a>

También puede permitir acciones solo en clústeres que tengan una etiqueta particular, con independencia del valor de la etiqueta. Para ello, puede utilizar el operador `Null`. Para obtener más información, consulte [Operador de condición para comprobar la existencia de claves de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_Null) en la *Guía del usuario de IAM*. Por ejemplo, para permitir acciones solo en clústeres de EMR que tengan la etiqueta `department`, con independencia del valor que contenga, podría sustituir los bloques Condition del ejemplo anterior por el siguiente. El operador `Null` buscará la presencia de la etiqueta `department` en un clúster de EMR. Si la etiqueta existe, la instrucción `Null` se evalúa como falsa, ajustándose a la condición especificada en esta instrucción de política y se permiten las acciones adecuadas. 

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

La siguiente instrucción de política permite a un usuario crear un clúster de EMR solo si el clúster tendrá una etiqueta `department`, que puede contener cualquier valor. Para el `PassRole` recurso, debe proporcionar el identificador o alias de la AWS cuenta y el nombre de la función de servicio. Para obtener más información sobre el formato ARN de IAM, [consulte](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) IAM en la Guía *del* usuario de ARNs IAM.

Para obtener más información sobre cómo especificar el operador de condición null (“false”), consulte [Operador de condición para comprobar la existencia de claves de condición](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) en la *Guía del usuario de 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*"
        }
      }
    }
  ]
}
```

------

## Ejemplo de instrucciones de políticas basadas en identidades para Cuadernos de Amazon EMR
<a name="emr-managed-notebooks-tags-examples"></a>

Las instrucciones de políticas de IAM de ejemplo de esta sección muestran escenarios comunes del uso de claves para limitar las acciones permitidas mediante Cuadernos de Amazon EMR. Siempre que no haya ninguna otra política asociada a la entidad principal (usuario) que permita las acciones, las claves de contexto de condición limitan las acciones permitidas tal como se indica.

**Example : permitir el acceso únicamente a Cuadernos de Amazon EMR que un usuario cree en función del etiquetado**  
La instrucción de política de ejemplo mostrada a continuación, cuando se asocia a un rol o a un usuario, permite al usuario trabajar solamente con los cuadernos que haya creado. Esta instrucción de política utiliza la etiqueta predeterminada que se aplica al crear un bloc de notas.  
En el ejemplo, el operador de condición `StringEquals` intenta emparejar una variable que representa el ID de usuario del usuario actual (`{aws:userId}`) con el valor de la etiqueta `creatorUserID`. Si la etiqueta `creatorUserID` no se ha añadido al bloc de notas o no contiene el valor del ID del usuario actual, la política no se aplica y esta política no permite las acciones. Si no hay otras instrucciones de política que permitan las acciones, el usuario solo puede trabajar con blocs de notas que tengan este valor para esta etiqueta.    
****  

```
{
  "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 — Etiquetado de cuadernos obligatorio al crearlos**  
En este ejemplo, se utiliza la clave de contexto `RequestTag`. La acción `CreateEditor` solo se permite si el usuario no cambia ni elimina la etiqueta `creatorUserID` que se añade de forma predeterminada. La variable \$1\$1aws:userId\$1, especifica el ID de usuario del usuario activo actualmente, que es el valor predeterminado de la etiqueta.  
La instrucción de política se puede utilizar para ayudar a garantizar que los usuarios no eliminan la etiqueta `createUserId` ni cambian su valor.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticmapreduce:CreateEditor"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:RequestTag/creatorUserId": "${aws:userid}"
        }
      },
      "Sid": "AllowELASTICMAPREDUCECreateeditor"
    }
  ]
}
```
Este ejemplo requiere que el usuario cree el clúster con una etiqueta que tenga la cadena de clave `dept` establecida en uno de los siguientes valores: `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 — Limitación de la creación de cuadernos a clústeres etiquetados y etiquetas de cuadernos obligatorias**  
Este ejemplo permite la creación de blocs de notas solo si el bloc de notas se crea con una etiqueta que tiene la cadena de clave `owner` establecida en uno de los valores especificados. Además, el bloc de notas solo se puede crear si el clúster tiene una etiqueta con la cadena de clave `department` establecida en uno de los 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 — Limitación de la capacidad de iniciar un cuaderno en función de las etiquetas**  
Este ejemplo limita la capacidad de iniciar blocs de notas únicamente a aquellos blocs de notas que tienen una etiqueta con la cadena de clave `owner` establecida en uno de los valores especificados. Debido a que el elemento `Resource` se utiliza solo para especificar el valor `editor`, la condición no se aplica al clúster y no es necesario etiquetarlo.    
****  

```
{
  "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 ejemplo es similar a uno anterior. Sin embargo, el límite solo se aplica a los clústeres etiquetados, no a los blocs de notas.    
****  

```
{
  "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"
    }
  ]
}
```
En este ejemplo, se utiliza un conjunto diferente de etiquetas de bloc de notas y de clúster. Permite el inicio de un bloc de notas solo si:  
+ El bloc de notas tiene una etiqueta con la cadena de clave `owner` establecida en cualquiera de los valores especificados

  —y—
+ El clúster tiene una etiqueta con la cadena de clave `department` establecida en cualquiera de los 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 — Limitación de la capacidad de abrir el editor de cuadernos en función de las etiquetas**  
En este ejemplo, se permite la apertura del editor de blocs de notas solo si:  
+ El bloc de notas tiene una etiqueta con la cadena de clave `owner` establecida en cualquiera de los valores especificados.

  —y—
+ El clúster tiene una etiqueta con la cadena de clave `department` establecida en cualquiera de los 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"
    }
  ]
}
```