Acceso detallado a las bases de datos y las tablas en AWS Glue Data Catalog
Si utiliza la opción AWS Glue Data Catalog con Amazon Athena, puede definir políticas de nivel de recursos para la base de datos y los objetos del catálogo de datos que se utilizan en Athena.
El término “fine-grained access control” (control de acceso detallado) aquí se refiere a la seguridad a nivel de base de datos y tabla. Para obtener información acerca de la seguridad a nivel de celda, fila y columna, consulte Data filtering and cell-level security in Lake Formation (Filtrado de datos y seguridad a nivel de celda en Lake Formation).
Puede definir los permisos de nivel de recursos en las políticas basadas en identidad de IAM.
En esta sección se analizan los permisos de nivel de recursos en las políticas basadas en identidad de IAM identity-based. Son diferentes de las políticas basadas en recursos. Para obtener más información sobre las diferencias, consulte Políticas basadas en identidad y políticas basadas en recursos en la Guía del usuario de IAM.
Consulte los siguientes temas sobre estas tareas:
Para llevar a cabo esta tarea | consulte el tema siguiente |
---|---|
Creación de una política de IAM que defina el acceso detallado a los recursos | Creación de políticas de IAM en la Guía del usuario de IAM. |
Más información acerca de las políticas basadas en identidad de IAM que se utilizan en AWS Glue | Políticas basadas en identidad (políticas de IAM) en la Guía para desarrolladores de AWS Glue. |
En esta sección
Limitaciones
Tenga en cuenta las siguientes limitaciones cuando use un control de acceso detallado con AWS Glue Data Catalog y Athena:
-
El acceso solo puede limitarse a bases de datos y tablas. Los controles de acceso detallado se aplican en el nivel de tabla y no puede limitar el acceso a las distintas particiones de una tabla. Para obtener más información, consulte Particiones y versiones de tabla en AWS Glue .
-
El AWS Glue Data Catalog contiene los siguientes recursos:
CATALOG
,DATABASE
,TABLE
yFUNCTION
.nota En esta lista, los recursos que son comunes entre Athena y AWS Glue Data Catalog son
TABLE
,DATABASE
yCATALOG
para cada cuenta.Function
es específico de AWS Glue. Para eliminar acciones en Athena, debe incluir los permisos a las acciones de AWS Glue. Consulte Ejemplos de permisos detallados para tablas y bases de datos.La jerarquía es la siguiente:
CATALOG
es un antecesor de todas lasDATABASES
de cada cuenta y cadaDATABASE
es un antecesor de todas susTABLES
yFUNCTIONS
. Por ejemplo, en el caso de una tabla denominadatable_test
que pertenezca a una base de datosdb
del catálogo de su cuenta, sus antecesores sondb
y el catálogo de su cuenta. Para la base de datosdb
, su antecesor es el catálogo de su cuenta y sus descendientes son las tablas y funciones. Para obtener más información acerca de la estructura jerárquica de los recursos, consulte Lista de ARN del catálogo de datos en la Guía para desarrolladores de AWS Glue. -
Para cualquier acción de Athena en un registro distinta a la operación de eliminación, como
CREATE DATABASE
,CREATE TABLE
,SHOW DATABASE
,SHOW TABLE
oALTER TABLE
, necesita permisos para llamar a esta acción en el recurso (tabla o base de datos) y en todos los antecesores de ese recurso en el catálogo de datos. Por ejemplo, en el caso de una tabla, sus antecesores son la base de datos a la que pertenece y el catálogo de la cuenta. En el caso de una base de datos, su antecesor es el catálogo de la cuenta. Consulte Ejemplos de permisos detallados para tablas y bases de datos. -
Para una acción de eliminación en Athena, como
DROP DATABASE
oDROP TABLE
, también necesita permisos para llamar a la acción de eliminación en todos los antecesores y descendientes del recurso en el catálogo de datos. Por ejemplo, para eliminar una base de datos necesita permisos en la base de datos, el catálogo, que es su antecesor, y todas las tablas y funciones definidas por el usuario, que son sus descendientes. Una tabla no tiene descendientes. Para ejecutarDROP TABLE
, necesita permisos para esta acción en la tabla, la base de datos a la que pertenece y el catálogo. Consulte Ejemplos de permisos detallados para tablas y bases de datos. -
Cuando limite el acceso a una base de datos específica del catálogo de datos, también debe especificar la política de acceso a la base de datos y al catálogo
default
para cada Región de AWS para las accionesGetDatabase
yCreateDatabase
. Si utiliza Athena en más de una región, agregue una línea distinta a la política con el ARN del recurso para cada base de datos y catálogodefault
de cada región.Por ejemplo, para permitir que
GetDatabase
tenga acceso aexample_db
en la regiónus-east-1
(Norte de Virginia), incluya también la base de datos y el catálogodefault
en la política para esa región para las accionesGetDatabase
,GetDatabases
yCreateDatabase
:{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:CreateDatabase" ], "Resource": [
"arn:aws:glue:us-east-1:123456789012:catalog"
,"arn:aws:glue:us-east-1:123456789012:database/default"
,"arn:aws:glue:us-east-1:123456789012:database/example_db"
] }
Obligatorio: política de acceso a la base de datos y al catálogo Default
en cada Región de AWS
Para que Athena funcione con AWS Glue Data Catalog, debe existir la siguiente política de acceso a la base de datos default
y a AWS Glue Data Catalog en cada Región de AWS para GetDatabase
, GetDatabases
y CreateDatabase
:
{ "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:CreateDatabase" ], "Resource": [
"arn:aws:glue:us-east-1:123456789012:catalog"
,"arn:aws:glue:us-east-1:123456789012:database/default"
] }
Particiones y versiones de tabla en AWS Glue
En AWS Glue, las tablas pueden tener particiones y versiones. Las versiones y particiones de tabla no se consideran recursos independientes en AWS Glue. El acceso a las versiones y particiones de tabla se otorga concediendo acceso a la tabla y a los recursos antecesores de la tabla.
Para un control de acceso detallado, se aplican los siguientes permisos de acceso:
-
Los controles de acceso detallado se aplican en el nivel de tabla. El acceso solo puede limitarse a bases de datos y tablas. Por ejemplo, si permite el acceso a una tabla particionada, este acceso se aplica a todas las particiones de la tabla. No se puede limitar el acceso a particiones individuales dentro de una tabla.
importante Tener acceso a todas las particiones de una tabla no es suficiente si necesita ejecutar acciones en AWS Glue en particiones. Para ejecutar acciones en particiones, necesita permisos para dichas acciones. Por ejemplo, para ejecutar
GetPartitions
en la tablamyTable
de la base de datosmyDB
, necesita permisos para la acciónglue:GetPartitions
en el catálogo de datos, la base de datosmyDB
ymyTable
. -
Los controles de acceso detallado no se aplican a las versiones de tabla. Al igual que ocurre con las particiones, el acceso a las versiones anteriores de una tabla se concede mediante el acceso a las API de versión de tabla de AWS Glue en la tabla y en los antecesores de la tabla.
Para obtener información sobre los permisos para las acciones de AWS Glue, consulte Permisos de API de AWS Glue: referencia de recursos y acciones en la Guía para desarrolladores de AWS Glue.
Ejemplos de permisos detallados para tablas y bases de datos
La tabla siguiente contiene ejemplos de políticas basadas en identidad de IAM que permiten un acceso detallado a las bases de datos y tablas de Athena. Le sugerimos que comience con estos ejemplos y, en función de sus necesidades, los ajuste para permitir o denegar acciones específicas con bases de datos y tablas determinadas.
Estos ejemplos incluyen la política de acceso para la base de datos y el catálogo default
, para las acciones GetDatabase
y CreateDatabase
. Esta política es necesaria para que Athena y el AWS Glue Data Catalog funcionen juntos. En el caso de trabajar en varias regiones de AWS, incluya esta política para cada una de las bases de datos y catálogos default
, con una línea por cada región.
Además, sustituya los nombres de la base de datos example_db
y la tabla test
por los de sus bases de datos y tablas.
Instrucción DDL | Ejemplo de una política de acceso de IAM que concede acceso al recurso |
---|---|
ALTER DATABASE | Permite modificar las propiedades de la base de datos example_db .
|
CREATE DATABASE | Permite crear la base de datos con el nombre example_db .
|
CREATE TABLE | Permite crear una tabla con el nombre test en la base de datos example_db .
|
DROP DATABASE | Permite borrar la base de datos example_db , incluidas todas las tablas que contiene.
|
DROP TABLE | Permite borrar una tabla particionada llamada test en la base de datos example_db . Si la tabla no tiene particiones, no incluya acciones de partición.
|
MSCK REPAIR TABLE | Permite actualizar los metadatos del catálogo después de agregar particiones compatibles con Hive a la tabla denominada test en la base de datos example_db .
|
SHOW DATABASES | Permite enumerar todas las bases de datos en AWS Glue Data Catalog.
|
SHOW TABLES | Permite enumerar todas las tablas de la base de datos example_db .
|