Uso de políticas de control de acceso de IAM basado en etiquetas
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
La siguiente política de IAM le permite ejecutar las consultas e interactuar con etiquetas para el grupo de trabajo llamado workgroupA
:
{ "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
" } ] }
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
.
{ "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
" } } } ] }
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
.
{ "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
La siguiente política de IAM le permite interactuar con etiquetas para el catálogo de datos denominado datacatalogA
:
{ "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
" } ] }
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
.
{ "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
" } } } ] }
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
.
{ "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
" ] } } } ] }