

# Uso de políticas de control de acceso de IAM basado en etiquetas
<a name="tags-access-control"></a>

Tener etiquetas le permite escribir una política de IAM que incluya el bloque `Condition` para controlar el acceso a un recurso en función de sus etiquetas. En esta sección se incluyen ejemplos de las políticas de etiquetas para los recursos de los grupos de trabajo y los catálogos de datos.

## Ejemplos de política de etiquetas para grupos de trabajo
<a name="tag-policy-examples-workgroups"></a>

### Ejemplo: política de etiquetado básica
<a name="tag-policy-examples-workgroups-basic"></a>

La siguiente política de IAM le permite ejecutar las consultas e interactuar con etiquetas para el grupo de trabajo llamado `workgroupA`:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:BatchGetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": "arn:aws:athena:{{us-east-1}}:{{123456789012}}:workgroup/{{workgroupA}}"
        }
    ]
}
```

------

### Ejemplo: bloqueo de política que deniega acciones en un grupo de trabajo en función de un par de claves de etiqueta y valores de etiqueta
<a name="tag-policy-examples-workgroups-basic"></a>

Las etiquetas que están asociadas a un recurso como un grupo de trabajo se denominan etiquetas de recursos. Las etiquetas de recursos le permiten escribir bloques de política como los siguientes que deniegan las acciones enumeradas en cualquier grupo de trabajo etiquetado con un par clave-valor como `stack`, `production`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "athena:GetWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:BatchGetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": "arn:aws:athena:{{us-east-1}}:{{123456789012}}:workgroup/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/{{stack}}": "{{production}}"
                }
            }
        }
    ]
}
```

------

### Ejemplo: bloqueo de política que restringe las solicitudes de acciones de cambio de etiqueta a etiquetas especificadas
<a name="tag-policy-examples-workgroups-restricted-specific"></a>

Las etiquetas que se pasan como parámetros a operaciones que cambian etiquetas (por ejemplo, `TagResource`, `UntagResource` o `CreateWorkGroup` con etiquetas) se denominan etiquetas de solicitud. El siguiente bloque de política de ejemplo permite la operación `CreateWorkGroup` solo si una de las etiquetas pasadas tiene la clave `costcenter` y el valor `1`, `2` o `3`.

**nota**  
Si desea permitir que un rol de IAM pase etiquetas como parte de una operación `CreateWorkGroup`, asegúrese de conceder permisos al rol para las acciones `TagResource` y `CreateWorkGroup`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:TagResource"
            ],
            "Resource": "arn:aws:athena:{{us-east-1}}:{{123456789012}}:workgroup/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/{{costcenter}}": [
                        "{{1}}",
                        "{{2}}",
                        "{{3}}"
                    ]
                }
            }
        }
    ]
}
```

------

## Ejemplos de política de etiquetas para catálogos de datos
<a name="tag-policy-examples-data-catalogs"></a>

### Ejemplo: política de etiquetado básica
<a name="tag-policy-examples-data-catalogs-basic"></a>

La siguiente política de IAM le permite interactuar con etiquetas para el catálogo de datos denominado `datacatalogA`:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:BatchGetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery"
            ],
            "Resource": [
                "arn:aws:athena:{{us-east-1}}:{{123456789012}}:workgroup/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateDataCatalog",
                "athena:GetDataCatalog",
                "athena:UpdateDataCatalog",
                "athena:DeleteDataCatalog",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource"
            ],
            "Resource": "arn:aws:athena:{{us-east-1}}:{{123456789012}}:datacatalog/{{datacatalogA}}"
        }
    ]
}
```

------

### Ejemplo: bloqueo de política que deniega acciones en un Catálogo de datos en función de un par de claves de etiqueta y valores de etiqueta
<a name="tag-policy-examples-data-catalogs-deny-actions"></a>

Puede utilizar etiquetas de recursos para escribir bloques de política que denieguen acciones específicas en catálogos de datos etiquetados con pares clave-valor de etiqueta específicos. La siguiente política de ejemplo deniega acciones en catálogos de datos que tienen el par clave-valor de etiqueta `stack`, `production`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "athena:CreateDataCatalog",
                "athena:GetDataCatalog",
                "athena:UpdateDataCatalog",
                "athena:DeleteDataCatalog",
                "athena:GetDatabase",
                "athena:ListDatabases",
                "athena:GetTableMetadata",
                "athena:ListTableMetadata",
                "athena:StartQueryExecution",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource"
            ],
            "Resource": "arn:aws:athena:{{us-east-1}}:{{123456789012}}:datacatalog/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/{{stack}}": "{{production}}"
                }
            }
        }
    ]
}
```

------

### Ejemplo: bloqueo de política que restringe las solicitudes de acciones de cambio de etiqueta a etiquetas especificadas
<a name="tag-policy-examples-data-catalogs-action-specific-tags"></a>

Las etiquetas que se pasan como parámetros a operaciones que cambian etiquetas (por ejemplo, `TagResource`, `UntagResource` o `CreateDataCatalog` con etiquetas) se denominan etiquetas de solicitud. El siguiente bloque de política de ejemplo permite la operación `CreateDataCatalog` solo si una de las etiquetas pasadas tiene la clave `costcenter` y el valor `1`, `2` o `3`.

**nota**  
Si desea permitir que un rol de IAM pase etiquetas como parte de una operación `CreateDataCatalog`, asegúrese de conceder permisos al rol para las acciones `TagResource` y `CreateDataCatalog`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateDataCatalog",
                "athena:TagResource"
            ],
            "Resource": "arn:aws:athena:{{us-east-1}}:{{123456789012}}:datacatalog/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/{{costcenter}}": [
                        "{{1}}",
                        "{{2}}",
                        "{{3}}"
                    ]
                }
            }
        }
    ]
}
```

------