Detalles de recursos compartidos de datos para Amazon Redshift
Con Amazon Redshift, puede compartir datos en directo de forma segura entre clústeres de Amazon Redshift sin tener que copiar ni transferir datos. Los recursos compartidos de datos para Amazon Redshift le permiten compartir los resultados de las consultas en directo, incluidas las actualizaciones de los datos de origen, con cualquier clúster de Amazon Redshift de la misma o de diferentes cuentas de AWS y regiones de AWS.
Temas
- Valores de estado de recurso compartido de datos en Amazon Redshift
- Uso compartido de datos dentro de los clústeres y entre ellos
- Uso compartido de datos con vistas en Amazon Redshift
- Administración del acceso a las operaciones de la API de uso compartido de datos con las políticas de IAM
- Consultas de recursos compartidos de datos
Valores de estado de recurso compartido de datos en Amazon Redshift
En este tema se describen los posibles estados que pueden tener los recursos compartidos de datos en Amazon Redshift.
Respecto de los datashares entre cuentas, existen diferentes estados de dichos datashares que requieren sus acciones. El recurso compartido de datos puede tener un estado activo, de acción necesaria o inactivo.
A continuación, se describe cada estado de los datashares y la acción que requiere:
Cuando el administrador de un clúster productor crea un datashare, el estado del datashare en el clúster productor es Pending authorization (Pendiente de autorización). El administrador del clúster productor puede autorizar a los consumidores de datos a acceder al datashare. No se necesita ninguna acción por parte del administrador del clúster consumidor.
Cuando el administrador de un clúster productor autoriza el datashare, el estado de dicho datashare pasa a ser Authorized (Autorizado) en el clúster productor. No se necesita ninguna acción por parte del administrador del clúster productor. Cuando hay al menos una asociación a un consumidor de datos para el datashare, el estado del datashare pasa de Authorized (Autorizado) a Active (Activo).
El estado del datashare pasa a ser Available (Action required on the Amazon Redshift console) (Disponible [Se requiere acción en la consola de Amazon Redshift]) en el clúster consumidor. El administrador del clúster consumidor puede asociar el datashare a los consumidores de los datos o rechazar el datashare. El administrador del clúster consumidor también puede usar el comando de la AWS CLI
describeDatashareforConsumer
para ver el estado de los datashares. O bien, el administrador puede utilizar el comandodescribeDatashare
de la CLI y proporcionar el nombre de recurso de Amazon (ARN) del datashare para ver su estado.Cuando el administrador del clúster consumidor asocia un datashare a los consumidores de datos, el estado del datashare pasa a ser Active (Activo) en el clúster productor. Cuando hay al menos una asociación a un consumidor de datos para el datashare, el estado del datashare pasa de Authorized (Autorizado) a Active (Activo). No se requiere ninguna acción por parte del administrador del clúster productor.
El estado del datashare pasa a ser Active (Activo) en el clúster consumidor. No se requiere ninguna acción por parte del administrador del clúster consumidor.
Cuando el administrador del clúster consumidor cancela una asociación de consumidor de un datashare, el estado del datashare pasa a ser Active (Activo) u Authorized (Autorizado). Pasa a ser Active (Activo) cuando existe al menos una asociación del datashare a otro consumidor de datos. Pasa a ser Authorized (Autorizado) cuando no hay ninguna asociación de consumidores al datashare en el clúster productor. No se necesita ninguna acción por parte del administrador del clúster productor.
El estado del datashare pasa a ser Action required (De acción requerida) en el clúster consumidor si se cancelan todas las asociaciones. El administrador del clúster consumidor puede volver a asociar el datashare a los consumidores de datos cuando el datashare está disponible para los consumidores.
Cuando el administrador de un clúster consumidor rechaza un datashare, el estado del datashare pasa a ser Action required (De acción requerida) en el clúster productor y Declined (Rechazado) en el clúster consumidor. El administrador del clúster productor puede volver a autorizar el datashare. No se necesita ninguna acción por parte del administrador del clúster consumidor.
Cuando el administrador del clúster productor cancela la autorización de un datashare, el estado del datashare pasa a ser Action required (De acción requerida) en el clúster productor. El administrador del clúster productor puede decidir volver a autorizar el recurso compartido de datos, si fuera necesario. No se requiere ninguna acción por parte del administrador del clúster consumidor.
Uso compartido de datos dentro de los clústeres y entre ellos
Solo necesita los recursos compartidos de datos al compartir datos entre distintos clústeres aprovisionados o grupos de trabajo sin servidor de Amazon Redshift. Dentro del mismo clúster, puede consultar otra base de datos mediante una notación simple de tres partes database.schema.table
, siempre que disponga de los permisos necesarios en los objetos de la otra base de datos.
Administración de permisos para recursos compartidos de datos en Amazon Redshift
Como administrador del clúster productor, conserva el control de los conjuntos de datos que comparte. Puede agregar objetos nuevos al datashare o quitárselos. También puede otorgar o revocar el acceso a los recursos compartidos de datos en su conjunto para los clústeres consumidores, las cuentas de AWS y las regiones de AWS. Cuando se revocan los permisos, los clústeres consumidores pierden inmediatamente el acceso a los objetos compartidos y dejan de verlos en la lista de recursos compartidos de datos INBOUND en SVV_DATASHARES.
En el siguiente ejemplo, se crea el recurso compartido de datos salesshare
, se agrega el esquema public
y se agrega la tabla public.tickit_sales_redshift
a salesshare
. También se otorgan permisos de uso en salesshare
al espacio de nombres de clúster especificado.
CREATE DATASHARE salesshare; ALTER DATASHARE salesshare ADD SCHEMA public; ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift; GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Para CREATE DATASHARE, los superusuarios y los propietarios de bases de datos pueden crear datashares. Para obtener más información, consulte CREATE DATASHARE. En el caso de ALTER DATASHARE, el propietario del datashare que cuenta con los permisos necesarios sobre los objetos del datashare que se van a agregar o quitar, puede modificar el datashare. Para obtener más información, consulte ALTER DATASHARE.
Como el administrador de un productor, cuando elimina un datashare, este deja de aparecer en las listas de los clústeres consumidores. Las referencias a bases de datos y esquema creadas en el clúster consumidor a partir de los datashares eliminados siguen existiendo, aunque no hay ningún objeto en ellas. El administrador del clúster consumidor debe eliminar estas bases de datos de forma manual.
En el lado del consumidor, un administrador de un clúster del consumidor puede determinar qué usuarios y roles deben tener acceso a los datos compartidos al crear una base de datos a partir del recurso compartido de datos. Según las opciones que elija al crear la base de datos, puede controlar el acceso a la misma de la siguiente manera. Para obtener más información acerca de la creación de una base de datos a partir de un recurso compartido de datos, consulte CREATE DATABASE.
Para obtener más información sobre cómo configurar un recurso compartido de datos y leer los datos de un consumidor, consulte Uso compartido del acceso de lectura a los datos en una cuenta de AWS.
Crear la base de datos sin la cláusula WITH PERMISSIONS
El administrador puede controlar el acceso en el nivel de la base de datos o del esquema. Para controlar el acceso en el nivel de esquema, el administrador debe crear un esquema externo a partir de la base de datos de Amazon Redshift creada desde el recurso compartido de datos.
En el siguiente ejemplo, se otorgan permisos para acceder a una tabla compartida en el nivel de la base de datos y del esquema.
GRANT USAGE ON DATABASE sales_db TO Bob; CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE sales_db SCHEMA 'public'; GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
Para restringir aún más el acceso, puede crear vistas encima de los objetos compartidos para así exponer solo los datos necesarios. Luego, puede utilizar estas vistas para brindar acceso a los usuarios y los roles.
Una vez que a los usuarios se les conceda acceso a la base de datos o al esquema, tendrán acceso a todos los objetos compartidos de esa base de datos o esquema.
Crear la base de datos con la cláusula WITH PERMISSIONS
Tras conceder los derechos de uso en la base de datos o el esquema, un administrador puede controlar aún más el acceso mediante el mismo proceso de concesión de permisos que utilizaría en una base de datos o esquema local. Sin permisos de objetos individuales, los usuarios no pueden acceder a ningún objeto de la base de datos o el esquema de datos compartidos, incluso después de que les conceda el permiso USAGE.
En el siguiente ejemplo, se otorgan permisos para acceder a una tabla compartida en el nivel de la base de datos.
GRANT USAGE ON DATABASE sales_db TO Bob; GRANT USAGE FOR SCHEMAS IN DATABASE sales_db TO Bob; GRANT SELECT ON sales_db.public.tickit_sales_redshift TO Bob;
Una vez que se les haya concedido el acceso a la base de datos o al esquema, los usuarios seguirán necesitando los permisos correspondientes para cualquier objeto de la base de datos o el esquema al que desee que accedan.
Uso compartido detallado mediante WITH PERMISSIONS
Permitir que los clústeres o grupos de trabajo sin servidor consulten el recurso compartido de datos
En este paso se supone que el recurso compartido de datos proviene de otro clúster o espacio de nombres de Amazon Redshift sin servidor de su cuenta, o bien proviene de otra cuenta y se ha asociado al espacio de nombres que está utilizando.
El administrador de la base de datos del consumidor puede crear una base de datos a partir del recurso compartido de datos.
CREATE DATABASE my_ds_db [WITH PERMISSIONS] FROM DATASHARE my_datashare OF NAMESPACE 'abc123def';
Si crea una base de datos WITH PERMISSIONS, puede conceder permisos detallados sobre los objetos del recurso compartido de datos a diferentes usuarios y roles. Sin esto, a todos los usuarios y roles a los que se les conceda el permiso USAGE en la base de datos de recurso compartido de datos se les conceden todos los permisos en todos los objetos de la base de datos de recurso compartido de datos.
A continuación, se muestra cómo conceder permisos a un usuario o rol de base de datos de Redshift. Debe estar conectado a una base de datos local para ejecutar estas instrucciones. No puede ejecutar estas instrucciones si ejecuta un comando USE en la base de datos de recurso compartido de datos antes de ejecutar las instrucciones de concesión.
GRANT USAGE ON DATABASE my_ds_db TO ROLE data_eng; GRANT CREATE, USAGE ON SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng; GRANT ALL ON ALL TABLES IN SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng; GRANT USAGE ON DATABASE my_ds_db TO bi_user; GRANT USAGE ON SCHEMA my_ds_db.my_shared_schema TO bi_user; GRANT SELECT ON my_ds_db.my_shared_schema.table1 TO bi_user;
Uso compartido de datos con vistas en Amazon Redshift
El clúster productor puede compartir vistas normales, de enlace de tiempo de ejecución y materializadas. Cuando comparte vistas normales o de enlace de tiempo de ejecución, no tiene que compartir las tablas base. En la siguiente tabla, se muestra cómo se admiten las vistas en el uso compartido de datos.
Nombre de la vista | ¿Se puede agregar esta vista a un datashare? | ¿Un consumidor puede crear esta vista en los objetos de los datashares en distintos clústeres? |
---|---|---|
Vista normal | Sí | No |
Vista de enlace en tiempo de ejecución | Sí | Sí |
Vista materializada | Sí | Sí, pero solo con una actualización completa |
La siguiente consulta muestra el resultado de una vista normal que es compatible con el uso compartido de datos. Para obtener información acerca de la definición de la vista normal, consulte CREATE VIEW.
SELECT * FROM tickit_db.public.myevent_regular_vw ORDER BY eventid LIMIT 5; eventid | eventname ----------+------------- 3835 | LeAnn Rimes 3967 | LeAnn Rimes 4856 | LeAnn Rimes 4948 | LeAnn Rimes 5131 | LeAnn Rimes
La siguiente consulta muestra el resultado de una vista de enlace en tiempo de ejecución que es compatible con el uso compartido de datos. Para obtener información sobre la definición de la vista de enlace en tiempo de ejecución, consulte CREATE VIEW.
SELECT * FROM tickit_db.public.event_lbv ORDER BY eventid LIMIT 5; eventid | venueid | catid | dateid | eventname | starttime --------+---------+-------+--------+------------------------------+--------------------- 1 | 305 | 8 | 1851 | Gotterdammerung | 2008-01-25 14:30:00 2 | 306 | 8 | 2114 | Boris Godunov | 2008-10-15 20:00:00 3 | 302 | 8 | 1935 | Salome | 2008-04-19 14:30:00 4 | 309 | 8 | 2090 | La Cenerentola (Cinderella) | 2008-09-21 14:30:00 5 | 302 | 8 | 1982 | Il Trovatore | 2008-06-05 19:00:00
La siguiente consulta muestra el resultado de una vista materializada que es compatible con el uso compartido de datos. Para obtener información acerca de la definición de la vista materializada, consulte CREATE MATERIALIZED VIEW.
SELECT * FROM tickit_db.public.tickets_mv; catgroup | qtysold ----------+--------- Concerts | 195444 Shows | 149905
Puede mantener tablas comunes para todos los usuarios de un clúster productor. También puede compartir subconjuntos de datos filtrados por las columnas de dimensión, como tenant_id
(account_id
o namespace_id
), con los clústeres consumidores. Para ello, puede definir una vista en la tabla base con un filtro en estas columnas de ID; por ejemplo, current_aws_account = tenant_id
. En el lado del consumidor, cuando consulta la vista, solo ve las filas que califican para su cuenta. Para ello, puede utilizar las funciones de contexto current_aws_account
y current_namespace
de Amazon Redshift.
La siguiente consulta devuelve el ID de la cuenta en la que se encuentra el clúster actual de Amazon Redshift. Puede ejecutar esta consulta si está conectado a Amazon Redshift.
select current_user, current_aws_account; current_user | current_aws_account -------------+-------------------- dwuser | 111111111111 (1row)
La siguiente consulta devuelve el espacio de nombres del clúster actual de Amazon Redshift. Puede ejecutar esta consulta si está conectado a la base de datos.
select current_user, current_namespace; current_user | current_namespace -------------+-------------------------------------- dwuser | 86b5169f-01dc-4a6f-9fbb-e2e24359e9a8 (1 row)
Actualización incremental para obtener vistas materializadas en un recurso compartido de datos
Amazon Redshift admite la actualización incremental de las vistas materializadas en un recurso compartido de datos de consumidores cuando se comparten las tablas base. La actualización incremental es una operación en la que Amazon Redshift identifica los cambios en la tabla o tablas base que se produjeron después de la actualización anterior y actualiza solo los registros correspondientes de la vista materializada. Para obtener más información sobre este comportamiento, consulte CREATE MATERIALIZED VIEW.
Administración del acceso a las operaciones de la API de uso compartido de datos con las políticas de IAM
Para controlar el acceso a las operaciones de la API de uso compartido de datos, utilice políticas basadas en acciones de IAM. Para obtener información sobre cómo administrar las políticas de IAM, consulte Administración de las políticas de IAM en la Guía del usuario de IAM.
Para obtener información sobre los permisos necesarios para utilizar las operaciones de la API de uso compartido de datos, consulte Permisos necesarios para utilizar las operaciones de la API de uso compartido de datos en la Guía de administración de Amazon Redshift.
Para que el uso compartido de datos entre cuentas sea más seguro, puede utilizar una clave condicional ConsumerIdentifier
para las operaciones de la API AuthorizeDataShare
y DeauthorizeDataShare
. De este modo, puede controlar de manera explícita qué Cuentas de AWS pueden realizar llamadas a las dos operaciones de la API.
Puede denegar la autorización del uso compartido de datos, o desautorizarlo, para cualquier consumidor que no sea su propia cuenta. Para ello, especifique el número de Cuenta de AWS en la política de IAM.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "redshift:AuthorizeDataShare", "redshift:DeauthorizeDataShare" ], "Resource": "*", "Condition": { "StringNotEquals": { "redshift:ConsumerIdentifier": "555555555555" } } } ] }
Puede permitir que un productor con un DatasHareARarn testshare2
comparta de forma explícita con un consumidor con una Cuenta de AWS de 111122223333 en la política de IAM.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "redshift:AuthorizeDataShare", "redshift:DeauthorizeDataShare" ], "Resource": "arn:aws:redshift:us-east-1:666666666666:datashare:af06285e-8a45-4ee9-b598-648c218c8ff1/testshare2", "Condition": { "StringEquals": { "redshift:ConsumerIdentifier": "111122223333" } } } ] }
Consultas de recursos compartidos de datos
Acceso a datos compartidos en Amazon Redshift
Puede detectar datos compartidos utilizando las interfaces SQL estándar, los controladores JDBC u ODBC, y la API de datos. También puede consultar datos con un alto rendimiento desde herramientas conocidas de análisis e inteligencia empresarial (BI). Puede realizar consultas tomando como referencia objetos de otras bases de datos de Amazon Redshift que sean tanto locales como remotas respecto de su clúster y para las que tenga permisos de acceso.
Puede hacerlo simplemente permaneciendo conectado a las bases de datos locales de su clúster. Luego, puede crear bases de datos consumidoras a partir de los recursos compartidos de datos con el fin de consumir los datos compartidos.
Después de haberlo hecho, puede conectarse a la base de datos de consumidores y consultar los objetos compartidos con la notación parcial. O bien, puede conectarse a una base de datos de clúster local y consultar los objetos de las bases de datos de consumidores mediante la notación de tres partes (
). También puede realizar consultas mediante enlaces de esquemas externos a esquemas de la base de datos consumidora. Puede consultar los datos locales y los datos compartidos por otros clústeres dentro de la misma consulta. Este tipo de consulta usa como referencia objetos de la base de datos conectada actual y otras bases de datos no conectadas, incluidas las bases de datos consumidoras que se crearon a partir del recurso compartido de datos. consumer_database_name
.schema_name
.table_name
Acceso a metadatos de los recursos compartidos de datos en Amazon Redshift
Para ayudar a los administradores de clústeres a detectar los datashares, Amazon Redshift proporciona un conjunto de vistas de metadatos para enumerar los datashares. Estas vistas muestran una lista de los recursos compartidos de datos creados en el clúster, así como de aquellos recibidos de otros clústeres de la misma cuenta, de otras cuentas o de otras regiones de AWS. Estas vistas muestran la siguiente información:
Datashares recibidos y compartidos por los clústeres
Contenido de los objetos de las bases de datos que se encuentran en los datashares, incluidos los metadatos básicos compartidos, los objetos y los consumidores
Utilice SHOW SCHEMAS para ver una lista de los esquemas compartidos en el recurso compartido de datos asociado a la base de datos conectada. Para obtener más información, consulte MOSTRAR ESQUEMAS.
Utilice SHOW TABLES para ver una lista de las tablas en un esquema compartido del recurso compartido de datos asociado a la base de datos conectada. Para obtener más información, consulte SHOW TABLES.
Utilice SHOW COLUMNS para ver una lista de las columnas de una tabla compartida del recurso compartido de datos asociado a la base de datos conectada. Para obtener más información, consulte SHOW COLUMNS.
Utilice SVV_DATASHARES para ver una lista de todos los datashares creados en su clúster (salientes) y compartidos por otros clústeres (entrantes). Para obtener más información, consulte SVV_DATASHARES.
Utilice SVV_DATASHARE_CONSUMERS para ver una lista de los consumidores de datos. Para obtener más información, consulte SVV_DATASHARE_CONSUMERS.
Utilice SVV_DATASHARE_OBJECTS para ver una lista de los objetos de todos los datashares creados en su clúster (salientes) y compartidos por otros clústeres (entrantes). Para obtener más información, consulte SVV_DATASHARE_OBJECTS.
Integración del uso compartido de datos de Amazon Redshift a las herramientas de inteligencia empresarial
Para integrar el uso compartido de datos a las herramientas de inteligencia empresarial (BI), le recomendamos utilizar los controladores JDBC u ODBC de Amazon Redshift.
Los controladores JDBC y ODBC de Amazon Redshift admiten la operación GetCatalogs
de la API en los controladores, que devuelve la lista de todas las bases de datos, incluidas las creadas a partir de datashares. Los controladores también admiten las operaciones posteriores, como GetSchemas
, GetTables
, etc., que devuelven datos de todas las bases de datos que se obtienen de GetCatalogs
. Los controladores proporcionan esta compatibilidad incluso cuando el catálogo no se especifica de forma explícita en la llamada. Para obtener más información acerca de los controladores JDBC u ODBC, consulte Configuración de conexiones en Amazon Redshift en la Guía de administración de Amazon Redshift.
Puede conectarse a las bases de datos de consumidores creadas de los recursos compartidos de datos directamente de la misma manera que cualquier otra base de datos. Si tiene una interfaz de usuario de cambio de conexión en la herramienta, la lista de bases de datos debe incluir las bases de datos creadas de los recursos compartidos de datos. Puede detectar estas bases de datos de consumidores con SVV_REDSHIFT_DATABASES.