Gestione delle autorizzazioni per un’unità di condivisione dati in Amazon Redshift - Amazon Redshift

Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog.

Gestione delle autorizzazioni per un’unità di condivisione dati in Amazon Redshift

Un amministratore producer mantiene il controllo per i set di dati che condividi. È possibile aggiungere nuovi oggetti o rimuoverli dall'unità di condivisione dati. È inoltre possibile concedere o revocare l'accesso alle unità di condivisione dati nel suo complesso per i cluster di consumer, gli account AWS o le regioni AWS. Quando le autorizzazioni vengono revocate, i cluster consumer perdono immediatamente l'accesso agli oggetti condivisi e smettono di vederli nell'elenco delle unità di condivisione dati INBOUND in SVV_DATASHARES.

L’esempio seguente crea l’unità di condivisione dati salesshare, aggiunge lo schema public e aggiunge la tabella public.tickit_sales_redshift a salesshare. Concede inoltre le autorizzazioni per l’utilizzo su salesshare al namespace specificato.

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';

Per CREATE DATASHARE, gli utenti con privilegi avanzati e i proprietari di database possono creare le unità di condivisione dati. Per ulteriori informazioni, consulta CREARE DATASHARE. Per ALTER DATASHARE, il proprietario dell'unità di condivisione dati con le autorizzazioni necessarie per gli oggetti dell'unità di condivisione dati da aggiungere o rimuovere può modificare l'unità. Per informazioni, consultare ALTER DATASHARE.

L'amministratore producer può eliminare una unità di condivisione dati e questa non sarà più visualizzata nei cluster consumer. I database e i riferimenti allo schema creati nel cluster consumer dai dati rilasciati continuano a essere presenti, pure senza contenere oggetti. L’amministratore consumer deve eliminare manualmente questi database.

Sul lato consumer, un amministratore consumer può determinare quali utenti e ruoli devono poter accedere ai dati condivisi creando un database dall’unità di condivisione dati. A seconda delle opzioni scelte durante la creazione del database, è possibile controllare l'accesso nel modo seguente. Per ulteriori informazioni sulla creazione di un database da un'unità di condivisione dati, consulta CREATE DATABASE.

Per ulteriori informazioni sulla configurazione di un’unità di condivisione dati e sulla lettura dei dati di un consumer, consulta Condivisione dell’accesso in lettura ai dati all’interno di un account AWS.

Creazione del database senza la clausola WITH PERMISSIONS

Un amministratore può controllare l'accesso a livello di database o schema. Per controllare l'accesso a livello di schema, l'amministratore deve creare uno schema esterno dal database Amazon Redshift creato dall'unità di condivisione dati.

Nell'esempio seguente vengono concesse le autorizzazioni per accedere a una tabella condivisa a livello di database e di schema.

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;

Per limitare ulteriormente l'accesso, è possibile creare viste sopra gli oggetti condivisi, esponendo solo i dati necessari. È possibile utilizzare queste viste per consentire l'accesso a utenti e ruoli.

Una volta ottenuto l’accesso al database o allo schema, gli utenti possono accedere a tutti gli oggetti condivisi in tale database o schema.

Creazione del database con la clausola WITH PERMISSIONS

Dopo aver assegnato i diritti di utilizzo per il database o lo schema, un amministratore può controllare ulteriormente l'accesso utilizzando lo stesso processo di assegnazione delle autorizzazioni utilizzato per un database o uno schema locale. Senza le autorizzazioni relative ai singoli oggetti, gli utenti non possono accedere a nessun oggetto nel database o nello schema dell'unità di condivisione dati anche se dispongono dell'autorizzazione USAGE.

L'esempio seguente assegna le autorizzazioni per accedere a una tabella condivisa a livello di database.

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;

Dopo aver ottenuto l'accesso al database o allo schema, gli utenti devono comunque ricevere le autorizzazioni pertinenti per tutti gli oggetti nel database o nello schema a cui si desidera che accedano.

Condivisione granulare con la clausola WITH PERMISSIONS

Puoi utilizzare la condivisione granulare con la clausola WITH PERMISSIONS per consentire ai cluster o ai gruppi di lavoro serverless di eseguire query sull’unità di condivisione dati. In questo processo presupponiamo che l’unità di condivisione dati abbia origine da un altro cluster o un altro namespace Amazon Redshift serverless dell’account oppure provenga da un altro account associato al namespace che utilizzi.

  1. L'amministratore del database consumer può creare un database dall'unità di condivisione dati.

    CREATE DATABASE my_ds_db [WITH PERMISSIONS] FROM DATASHARE my_datashare OF NAMESPACE 'abc123def';

    Se crei un database con la clausola WITH PERMISSIONS, puoi concedere autorizzazioni granulari per gli oggetti dell’unità di condivisione dati a utenti e ruoli diversi. In caso contrario, a tutti gli utenti e i ruoli a cui è stata concessa l'autorizzazione USAGE per il database dell'unità di condivisione dati vengono assegnate tutte le autorizzazioni per tutti gli oggetti all'interno del database dell'unità di condivisione dati.

  2. Di seguito viene illustrato come assegnare le autorizzazioni a un utente o un ruolo del database Redshift. È necessario essere connessi a un database locale per eseguire queste istruzioni. Non è possibile usare queste istruzioni se si esegue un comando USE sul database dell'unità di condivisione dati prima delle istruzioni grant.

    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;