web-dev-qa-db-fra.com

Subventions Amazon Redshift - Il n'est pas possible préparer à une nouvelle table, même si l'utilisateur dispose d'autorisations pour toutes les tables du schéma

La situation dans Amazon Redshift est quelque peu amusante. J'ai un utilisateur X qui dispose d'une subvention à sélectionner sur toutes les tables du schéma public, mais une fois qu'une nouvelle table est créée, cette subvention ne semble pas s'appliquer à la nouvelle table. Est-ce un comportement normal? Si oui, comment peut-on traiter de telle sorte que les autorisations au niveau du schéma soient maintenues. Je vous remercie.

9
elvikingo

Dans Redshift, les tables et les vues n'héritent pas automatiquement des autorisations de leur schéma parent. Les tables que vous venez de créer ne sont accessibles qu’à l’utilisateur qui les a créées et au superutilisateur.

Dans un récent correctif de Redshift, une nouvelle fonctionnalité permettant d’accorder des privilèges par défaut a été implémentée pour résoudre ce problème.

Modifier les privilèges par défaut

L'extrait de code suivant n'accorde les privilèges de sélection que pour toutes les futures tables du schéma de vente au groupe sales_admin. Si vous souhaitez que cela s'applique aux tables existantes d'un schéma, vous devrez le combiner avec une deuxième instruction d'octroi.

alter default privileges in schema sales grant select on tables to group sales_admin;
10
John

Exécuter la commande suivante en tant que super utilisateur (maître):

alter default privileges 
  for user staging_user 
  in schema staging 
  grant select on tables 
  to reporting_user;

permettra à reporting_user de sélectionner les données de toutes les futures tables créées par staging_user dans le transfert de schéma.

6
hibernado

C'est un comportement normal. Seul le propriétaire/superutilisateur de l'objet est autorisé à utiliser l'objet par défaut.

http://docs.aws.Amazon.com/redshift/latest/dg/r_Privileges.html

Vous pouvez ajouter la commande grant à votre instruction create table et accorder les privilèges nécessaires à l'utilisateur.

0
vtuhtan