Amazon Redshift
Manuel du développeur de base de données

REVOKE

Supprime les privilèges d'accès, tels que des privilèges pour créer ou mettre à jour les tables, d'un utilisateur ou d'un groupe d'utilisateurs.

Vous pouvez accorder les autorisations GRANT ou REVOKE USAGE sur un schéma externe à des utilisateurs et des groupes d'utilisateurs de base de données qui utilisent la syntaxe ON SCHEMA. Si vous utilisez ON EXTERNAL SCHEMA avec AWS Lake Formation, vous pouvez seulement accorder les privilèges GRANT et REVOKE à un rôle AWS Identity and Access Management (IAM). Pour connaître la liste des privilèges, consultez la syntaxe.

Pour les procédures stockées, les autorisations USAGE ON LANGUAGE plpgsql sont accordées par défaut à PUBLIC. L'autorisation EXECUTE ON PROCEDURE est uniquement accordée au propriétaire et aux super-utilisateurs par défaut.

Spécifiez dans la commande REVOKE les privilèges que vous souhaitez supprimer. Pour donner des privilèges, utilisez la commande GRANT.

Syntaxe

REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] EXECUTE ON FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { EXECUTE } [,...] | ALL [ PRIVILEGES ] } ON PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] USAGE ON LANGUAGE language_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]

La syntaxe suivante s’applique à l’intégration de Redshift Spectrum à Lake Formation.

REVOKE [ GRANT OPTION FOR ] { SELECT | ALL [ PRIVILEGES ] } ( column_list ) ON EXTERNAL TABLE schema_name.table_name FROM { IAM_ROLE iam_role } [, ...] REVOKE [ GRANT OPTION FOR ] { { SELECT | ALTER | DROP | DELETE | INSERT } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL TABLE schema_name.table_name [, ...] FROM { { IAM_ROLE iam_role } [, ...] | PUBLIC } REVOKE [ GRANT OPTION FOR ] { { CREATE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL SCHEMA schema_name [, ...] FROM { IAM_ROLE iam_role } [, ...]

Paramètres

GRANT OPTION FOR

Supprime uniquement la possibilité d'accorder un privilège spécifié à d'autres utilisateurs et ne supprime pas le privilège lui-même. Vous ne pouvez pas retirer GRANT OPTION d'un groupe ou de PUBLIC.

SELECT

Retire le privilège de sélectionner les données d'une table ou d'une vue à l'aide d'une instruction SELECT.

INSERT

Retire le privilège de charger les données dans une table à l'aide d'une instruction INSERT ou COPY.

MISE A JOUR

Révoque le privilège de mettre à jour une colonne de table à l'aide d'une instruction UPDATE.

DELETE

Retire le privilège de supprimer une ligne d'une table.

REFERENCES

Retire le privilège de créer une contrainte de clé étrangère. Vous devez révoquer ce privilège sur la table qui est référencée et sur la table qui fait référence.

ALL [ PRIVILEGES ]

Retire simultanément tous les privilèges disponibles de l'utilisateur ou groupe spécifié. Le mot clé PRIVILEGES est facultatif.

ALTER

Supprime le privilège requis pour modifier une table dans un Catalogue de données AWS Glue activé pour Lake Formation. Ce privilège s’applique uniquement lors de l’utilisation de Lake Formation.

DROP

Supprime le privilège requis pour supprimer une table d’un Catalogue de données AWS Glue activé pour Lake Formation. Ce privilège s’applique uniquement lors de l’utilisation de Lake Formation.

ON [ TABLE ] nom_table

Retire les privilèges spécifiés sur une table ou une vue. Le mot clé TABLE est facultatif.

ON ALL TABLES IN SCHEMA nom_schéma

Retire les privilèges spécifiés sur toutes les tables du schéma référencé.

( column_list ) ON EXTERNAL TABLE schema_name.table_name

Supprime les privilèges spécifiés d'un rôle IAM sur les colonnes spécifiées de la table Lake Formation dans le schéma référencé.

ON EXTERNAL TABLE schema_name.table_name

Supprime les privilèges spécifiés d’un rôle IAM sur les tables Lake Formation spécifiées dans le schéma référencé.

ON EXTERNAL SCHEMA schema_name

Supprime les privilèges spécifiés d’un rôle IAM sur le schéma référencé.

FROM IAM_ROLE iam_role

Indique le rôle IAM qui perd les privilèges.

GROUP group_name

Retire les privilèges au groupe d'utilisateurs spécifié.

PUBLIC

Retire les privilèges spécifiés à tous les utilisateurs. PUBLIC représente un groupe qui inclut toujours tous les utilisateurs. Les privilèges d'un utilisateur correspondent à la somme des privilèges accordés à PUBLIC, des privilèges accordés aux groupes auxquels l'utilisateur appartient et des privilèges octroyés à l'utilisateur individuellement.

Supprimer PUBLIC des résultats d’une table externe Lake Formation revient à supprimer le privilège du groupe everyone Lake Formation.

CREATE

En fonction de l'objet de base de données, retire les privilèges suivants à l'utilisateur ou au groupe :

  • Pour les bases de données, l'utilisation de la clause CREATE pour REVOKE empêche les utilisateurs de créer des schémas dans la base de données.

  • Pour les schémas, l'utilisation de la clause CREATE pour REVOKE empêche les utilisateurs de créer des objets dans un schéma. Pour renommer un objet, l'utilisateur doit disposer du privilège CREATE et posséder l'objet à renommer.

Note

Par défaut, tous les utilisateurs ont les privilèges CREATE et USAGE sur le schéma PUBLIC.

TEMPORARY | TEMP

Retire le privilège de créer des tables temporaires dans la base de données spécifiée.

Note

Par défaut, les utilisateurs ont l'autorisation de créer des tables temporaires grâce à leur appartenance automatique au groupe PUBLIC. Pour supprimer le privilège à tous les utilisateurs de créer des tables temporaires, révoquez l'autorisation TEMP du groupe PUBLIC, puis accordez explicitement l'autorisation de créer des tables temporaires à des utilisateurs ou groupes d'utilisateurs spécifiques.

ON DATABASE nom_db

Retire les privilèges sur la base de données spécifiée.

USAGE

Retire les privilèges USAGE sur les objets au sein d'un schéma spécifique, ce qui rend ces objets inaccessibles aux utilisateurs. Les actions spécifiques sur ces objets doivent être révoquées séparément (par exemple, le privilège EXECUTE sur les fonctions).

Note

Par défaut, tous les utilisateurs ont les privilèges CREATE et USAGE sur le schéma PUBLIC.

ON SCHEMA nom_schéma

Retire les privilèges sur le schéma spécifié. Vous pouvez utiliser les privilèges du schéma pour contrôler la création de tables ; le privilège CREATE pour une base de données contrôle uniquement la création de schémas.

CASCADE

Si un utilisateur détient un privilège avec l'option GRANT et a attribué le privilège à d'autres utilisateurs, les privilèges détenus par ces autres utilisateurs sont des privilèges dépendants. Si le privilège ou l'option d'attribution détenu par le premier utilisateur est révoqué et qu'il existe des privilèges dépendants, ceux-ci sont également annulés si CASCADE est spécifié ; sinon, l'action de révocation échoue.

Par exemple, si l'utilisateur A a accordé un privilège avec l'option d'attribution à l'utilisateur B et que l'utilisateur B a accordé le privilège à l'utilisateur C, l'utilisateur A peut retirer l'option d'approbation à l'utilisateur B et utiliser l'option CASCADE pour retirer à son tour le privilège à l'utilisateur C.

RESTRICT

Retire uniquement les privilèges que l'utilisateur a directement accordés. Il s'agit du comportement par défaut.

EXECUTE ON FUNCTION nom_fonction

Révoque le privilège EXECUTE sur une fonction spécifique. Comme les noms de fonction peuvent être surchargés, vous devez inclure la liste des arguments de la fonction. Pour plus d'informations, consultez Attribution d'un nom aux fonctions UDF.

EXECUTE ON PROCEDURE procedure_name

Révoque le privilège EXECUTE sur une procédure stockée spécifique. Comme les noms de procédures stockées peuvent être surchargés, vous devez inclure la liste des arguments de la procédure. Pour de plus amples informations, veuillez consulter Dénomination des procédures stockées.

EXECUTE ON ALL PROCEDURES IN SCHEMA procedure_name

Révoque les privilèges spécifiés sur toutes les procédures du schéma référencé.

USAGE ON LANGUAGE nom_langage

Retire le privilège USAGE sur un langage. Pour les fonctions définies par l'utilisateur (UDF ou UDAF), utilisez plpythonu. Pour les fonctions SQL définies par l'utilisateur, utilisez sql. Pour les procédures stockées, utilisez plpgsql.

Pour créer une fonction définie par l'utilisateur, vous devez avoir l'autorisation pour USAGE ON LANGUAGE pour SQL ou plpythonu (Python). Par défaut, USAGE ON LANGUAGE SQL est accordé à PUBLIC. Toutefois, vous devez accorder explicitement USAGE ON LANGUAGE PLPYTHONU à des utilisateurs ou des groupes spécifiques.

Pour révoquer le privilège USAGE pour SQL, révoquez d'abord USAGE de PUBLIC. Ensuite, accordez le privilège USAGE pour SQL uniquement aux utilisateurs ou groupes spécifiques autorisés à créer des fonctions SQL définies par l'utilisateur. L'exemple suivant révoque le privilège USAGE pour SQL de PUBLIC, puis accorde USAGE au groupe d'utilisateurs udf_devs.

revoke usage on language sql from PUBLIC; grant usage on language sql to group udf_devs;

Pour plus d'informations, consultez Privilèges et sécurité des fonctions UDF.

Pour révoquer le privilège USAGE pour les procédures stockées, révoquez d'abord USAGE de PUBLIC. Ensuite, accordez le privilège USAGE sur plpgsql uniquement aux utilisateurs ou groupes spécifiques autorisés à créer des procédures stockées. Pour de plus amples informations, veuillez consulter Sécurité et privilèges des procédures stockées .

Notes d'utilisation

Pour retirer les privilèges à un objet, vous devez répondre à l'un des critères suivants :

  • Être le propriétaire de l'objet.

  • Être un super-utilisateur.

  • Avoir un privilège accordé pour cet objet et ce privilège.

    Par exemple, la commande suivante autorise l'utilisateur HR à exécuter des commandes SELECT sur la table des employés et à accorder et révoquer le même privilège aux autres utilisateurs.

    grant select on table employees to HR with grant option;

    HR ne peut pas révoquer de privilèges pour une opération autre que SELECT, ou sur toute autre table que celle des employés.

Les super-utilisateurs peuvent accéder à tous les objets, quelle que soit les commandes GRANT et REVOKE qui définissent les privilèges d'objet.

PUBLIC représente un groupe qui inclut toujours tous les utilisateurs. Par défaut, tous les membres de PUBLIC disposent des privilèges CREATE et USAGE sur le schéma PUBLIC. Pour limiter toutes les autorisations d'un utilisateur sur le schéma PUBLIC, vous devez d'abord révoquer toutes les autorisations de PUBLIC sur le schéma PUBLIC, puis accorder des privilèges à des utilisateurs ou des groupes spécifiques. L'exemple suivant contrôle les privilèges de création de table du schéma PUBLIC.

revoke create on schema public from public;

Pour supprimer des privilèges d’une table Lake Formation, le rôle IAM associé au schéma externe de la table doit avoir l’autorisation d’accorder des privilèges à la table externe. L'exemple suivant crée un schéma externe avec un rôle IAM myGrantor associé. Le rôle IAM myGrantor a l’autorisation de supprimer des autorisations. La commande REVOKE utilise l’autorisation du rôle IAM myGrantor associé au schéma externe pour supprimer des autorisations du rôle IAM myGrantee.

create external schema mySchema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/myGrantor' create external database if not exists;
revoke select on external table mySchema.mytable from iam_role 'arn:aws:iam::123456789012:role/myGrantee';

Note

Si le rôle IAM a l’autorisation ALL dans un Catalogue de données AWS Glue activé pour Lake Formation, l’autorisation ALL n’est pas supprimée. Seule l’autorisation SELECT est supprimée. Vous pouvez afficher les autorisations Lake Formation dans la console Lake Formation.

Exemples

L'exemple suivant retire les privilèges INSERT sur la table SALES au groupe d'utilisateurs GUESTS. Cette commande empêche les membres de GUESTS de pouvoir charger des données dans la table SALES à l'aide de la commande INSERT :

revoke insert on table sales from group guests;

L'exemple suivant retire le privilège SELECT sur toutes les tables du schéma QA_TICKIT à l'utilisateur fred :

revoke select on all tables in schema qa_tickit from fred;

L'exemple ci-dessous retire le privilège de sélectionner à partir d'une vue de l'utilisateur bobr:

revoke select on table eventview from bobr;

L'exemple suivant retire le privilège de créer des tables temporaires dans la base de données TICKIT à tous les utilisateurs :

revoke temporary on database tickit from public;