Amazon Redshift ne prendra plus en charge la création de nouvelles fonctions Python définies par l’utilisateur à compter du 1er novembre 2025. Si vous souhaitez utiliser des fonctions Python définies par l’utilisateur, créez-les avant cette date. Les fonctions Python définies par l’utilisateur existantes continueront de fonctionner normalement. Pour plus d’informations, consultez le billet de blog
Politiques IAM pour Amazon Redshift Spectrum
Cette rubrique décrit les autorisations IAM requises pour utiliser Redshift Spectrum.
Par défaut, Amazon Redshift Spectrum utilise le AWS Glue Data Catalog dans les régions AWS qui prennent en charge AWS Glue. Dans les autres régions AWS, Redshift Spectrum utilise le catalogue de données Athena. Votre cluster a besoin d’une autorisation pour accéder à votre catalogue de données externe dans AWS Glue ou Athena et à vos fichiers de données dans Amazon S3. Vous fournissez cette autorisation en référençant un rôle AWS Identity and Access Management (IAM) qui est attaché à votre cluster. Si vous utilisez un métastore Apache Hive pour gérer votre catalogue de données, il n’est pas nécessaire que vous fournissiez un accès à Athena.
Vous pouvez créer des chaînes de rôles pour permettre à votre cluster d’endosser d’autres rôles non attachés au cluster. Pour de plus amples informations, consultez Créer des rôles IAM dans Amazon Redshift Spectrum.
Le catalogue AWS Glue auquel vous accédez peut être chiffré pour être mieux sécurisé. Si le catalogue AWS Glue est chiffré, vous avez besoin de la clé AWS KMS pour qu’AWS Glue accède au catalogue de données AWS Glue. Pour plus d’informations, consultez Chiffrement de votre catalogue de données AWS Glue dans le Guide du développeur AWS Glue.
Rubriques
Autorisations Amazon S3
Au minimum, votre cluster a besoin d’un accès GET et LIST à votre compartiment Amazon S3. Si votre compartiment n’est pas dans le même compte AWS que votre cluster, il doit également autoriser votre cluster à accéder aux données. Pour plus d’informations, consultez Autoriser Amazon Redshift à accéder à d’autres services AWS en votre nom.
Note
Le compartiment Amazon S3 ne peut pas appliquer une politique de compartiment qui restreint l’accès uniquement à partir de points de terminaison VPC spécifiques.
La politique suivante accorde un accès GET et LIST à n’importe quel compartiment Amazon S3. La politique autorise l’accès aux compartiments Amazon S3 pour Redshift Spectrum, ainsi que les opérations COPY.
La politique suivante accorde un accès GET et LIST à votre compartiment Amazon S3 nommé amzn-s3-demo-bucket.
Autorisations Amazon S3 entre comptes
Pour accorder à Redshift Spectrum la permission d’accéder aux données d’un compartiment Amazon S3 qui appartient à un autre compte AWS, ajoutez la politique suivante au compartiment Amazon S3. Pour plus d’informations, consultez Accorder des autorisations entre comptes sur un compartiment.
Politiques visant à accorder ou restreindre l’accès à l’aide de Redshift Spectrum
L’exemple suivant autorise l’accès aux compartiments Amazon S3 pour Amazon Redshift. Lorsque vous ajoutez cette politique à un rôle IAM, nous vous recommandons d’utiliser un rôle IAM uniquement utilisé pour Amazon Redshift. Nous vous recommandons également de ne pas réutiliser les rôles existants ni d’ajouter d’autorisations supplémentaires à ce rôle IAM.
Politiques visant à accorder des autorisations minimales
La politique suivante accorde les autorisations minimales requises pour utiliser Redshift Spectrum avec Amazon S3, AWS Glue et Athena.
Si vous utilisez Athena pour votre catalogue de données au lieu d’AWS Glue, la politique requiert un accès complet à Athena. La politique suivante donne accès aux ressources Athena. Si votre base de données externe se trouve dans un métastore Hive, vous n’avez pas besoin de l’accès Athena.
Créer des rôles IAM dans Amazon Redshift Spectrum
Lorsque vous attachez un rôle à votre cluster, celui-ci peut assumer ce rôle pour accéder à Amazon S3, Athena et AWS Glue en votre nom. Si un rôle attaché à votre cluster n’a pas accès aux ressources nécessaires, vous pouvez créer une chaîne avec un autre rôle, lequel peut appartenir à un autre compte. Votre cluster endosse alors provisoirement le rôle relié par la chaîne afin d’accéder aux données. Vous pouvez également accorder des accès entre comptes en créant des chaînes de rôles. Une chaîne comprend 10 rôles maximum. Chaque rôle de la chaîne passe au rôle suivant, jusqu’à ce que le cluster endosse le dernier rôle de la chaîne.
Pour créer une chaîne de rôles, vous devez établir une relation d’approbation entre ces rôles. Un rôle endossant un autre rôle doit avoir une politique d’autorisation lui permettant d’endosser le rôle spécifié. Le rôle qui transmet les autorisations, quant à lui, doit avoir une politique d’approbation lui permettant de transmettre ses autorisations à un autre rôle. Pour plus d’informations, consultez Création de liens de rôles IAM dans Amazon Redshift.
Lorsque vous exécutez la commande CREATE EXTERNAL SCHEMA, vous pouvez créer des chaînes de rôles en insérant une liste d’ARN de rôles séparés par des virgules.
Note
La liste des rôles de la chaîne ne doit pas inclure d’espaces.
Dans l’exemple suivant, MyRedshiftRole est attaché au cluster. MyRedshiftRole assume le rôle AcmeData qui appartient au compte 111122223333.
create external schema acme from data catalog database 'acmedb' region 'us-west-2' iam_role 'arn:aws:iam::123456789012:role/MyRedshiftRole,arn:aws:iam::111122223333:role/AcmeData';
Contrôle de l’accès au catalogue de données AWS Glue
Si vous utilisez AWS Glue pour votre catalogue de données, vous pouvez appliquer un contrôle précis des accès au catalogue de données AWS Glue à l’aide de votre politique IAM. Par exemple, vous pouvez exposer uniquement quelques bases de données et tables à un rôle IAM spécifique.
Les sections suivantes décrivent les politiques IAM pour divers niveaux d’accès aux données stockées dans le catalogue de données AWS Glue.
Rubriques
Politique pour les opérations de base de données
Si vous voulez accorder à des utilisateurs les autorisations nécessaires pour consulter et créer une base de données, ils ont besoin des droits d’accès à la base de données et au catalogue de données AWS Glue.
L’exemple de requête suivant crée une base de données.
CREATE EXTERNAL SCHEMA example_db FROM DATA CATALOG DATABASE 'example_db' region 'us-west-2' IAM_ROLE 'arn:aws:iam::redshift-account:role/spectrumrole' CREATE EXTERNAL DATABASE IF NOT EXISTS
La politique IAM suivante fournit les autorisations minimales requises pour créer une base de données.
L’exemple de requête suivant dresse la liste des bases de données actuelles.
SELECT * FROM SVV_EXTERNAL_DATABASES WHERE databasename = 'example_db1' or databasename = 'example_db2';
La politique IAM suivante fournit les autorisations minimales requises pour répertorier les bases de données actuelles.
Politique pour les opérations de table
Si vous souhaitez octroyer aux utilisateurs les autorisations nécessaires pour créer, supprimer, modifier ou effectuer toute autre action sur les tables, ils ont besoin de plusieurs types d’accès. Ils ont besoin d’accéder aux tables elles-mêmes, aux bases de données auxquelles elles appartiennent et au catalogue.
L’exemple de requête suivant crée une table externe.
CREATE EXTERNAL TABLE example_db.example_tbl0( col0 INT, col1 VARCHAR(255) ) PARTITIONED BY (part INT) STORED AS TEXTFILE LOCATION 's3://test/s3/location/';
La politique IAM suivante fournit les autorisations minimales requises pour créer une table externe.
Les exemples de requêtes suivants dressent la liste des tables externes actuelles.
SELECT * FROM svv_external_tables WHERE tablename = 'example_tbl0' OR tablename = 'example_tbl1';
SELECT * FROM svv_external_columns WHERE tablename = 'example_tbl0' OR tablename = 'example_tbl1';
SELECT parameters FROM svv_external_tables WHERE tablename = 'example_tbl0' OR tablename = 'example_tbl1';
La politique IAM suivante fournit les autorisations minimales requises pour répertorier les tables externes actuelles.
L’exemple de requête suivant modifie une table existante.
ALTER TABLE example_db.example_tbl0 SET TABLE PROPERTIES ('numRows' = '100');
La politique IAM suivante fournit les autorisations minimales requises pour modifier une table existante.
L’exemple de requête suivant supprime une table existante.
DROP TABLE example_db.example_tbl0;
La politique IAM suivante fournit les autorisations minimales requises pour supprimer une table existante.
Politique pour des opérations de partition
Si vous souhaitez accorder à des utilisateurs des autorisations pour effectuer des opérations au niveau des partitions (afficher, créer, supprimer, modifier, etc.), ceux-ci ont besoin d’autorisations sur les tables auxquelles les partitions appartiennent. Ils ont également besoin d’autorisations sur les bases de données associées et le catalogue de données AWS Glue.
L’exemple de requête suivant crée une partition.
ALTER TABLE example_db.example_tbl0 ADD PARTITION (part=0) LOCATION 's3://test/s3/location/part=0/'; ALTER TABLE example_db.example_t ADD PARTITION (part=1) LOCATION 's3://test/s3/location/part=1/';
La politique IAM suivante fournit les autorisations minimales requises pour créer une partition.
L’exemple de requête suivant dresse la liste des partitions actuelles.
SELECT * FROM svv_external_partitions WHERE schemname = 'example_db' AND tablename = 'example_tbl0'
La politique IAM suivante fournit les autorisations minimales requises pour répertorier les partitions actuelles.
L’exemple de requête suivant modifie une partition existante.
ALTER TABLE example_db.example_tbl0 PARTITION(part='0') SET LOCATION 's3://test/s3/new/location/part=0/';
La politique IAM suivante fournit les autorisations minimales requises pour modifier une partition existante.
L’exemple de requête suivant supprime une partition existante.
ALTER TABLE example_db.example_tbl0 DROP PARTITION(part='0');
La politique IAM suivante fournit les autorisations minimales requises pour supprimer une partition existante.