Question

J'ai essayé d'accorder CONNECT à un utilisateur via un rôle:

CREATE ROLE my_role IDENTIFIED BY "passwd";
GRANT CONNECT TO my_role;

CREATE USER my_user IDENTIFIED BY "passwd";
GRANT my_role TO my_user;

Lorsque je tente cette 10g il fonctionne très bien, alors que dans 11g connexion est rejetée:

ORA-01045: user MY_USER lacks CREATE SESSION privilege; logon denied

L'octroi CREATE SESSION au rôle ne fait pas de différence.
Je ne peux plus me connecter après avoir accordé directement CONNECT (ou CREATE SESSION) à l'utilisateur.

a Oracle changé ce comportement ou que je fais quelque chose de mal?

Était-ce utile?

La solution

Je pense que vous pourriez avoir pris la fuite avec une sécurité « fonctionnalité » dans 10g. La façon dont je lis le Guide de référence SQL et de sécurité pour 11g indique que les rôles de mot de passe permis nécessitent l'utilisation du SET ROLE my_role IDENTIFIED BY passwd avant que les droits accordés par ce rôle sont efficaces.

Vous ne pouvez pas CREATE SESSION jusqu'à ce que vous avez le rôle, et vous ne pouvez pas avoir le rôle jusqu'à ce que vous émettez SET ROLE.

Catch-22.

Autres conseils

Base de connaissances Oracle [ID 745407,1] explique cela.

La clause DEFAULT dans:

modifier les rôles utilisateur par défaut; précise les rôles accordés par défaut à l'utilisateur lors de la connexion. Cette clause ne peut contenir que des rôles qui ont été accordés directement à l'utilisateur avec une instruction GRANT ou des rôles créés par l'utilisateur avec le privilège CREATE ROLE. Vous ne pouvez pas utiliser la clause de rôle par défaut pour permettre:

  1. Les rôles ne sont pas accordés à l'utilisateur

  2. Les rôles accordés par d'autres rôles

  3. Rôles gérés par un service externe (comme le système d'exploitation), ou par Oracle Internet Directory

  4. Les rôles qui passe authentifiées.

  5. Les rôles qui sont mis en œuvre comme des rôles d'application sécurisés.

Pour un mot de passe rôles authentifié, le changement a été introduit dans la version 10.2.0.5 et 11.1.0.7. Pour les rôles d'application sécurisés, le changement a été introduit dans l'Oracle libère 10.2.0.4 et 11.1.0.7 Ces changements seront appliqués à toutes les versions futures. Les restrictions mentionnées ci-dessus seront introduites dans la documentation future.

On peut facilement transformer le mot de passe a permis des rôles dans des rôles standards en exécutant le script résultant de:

sélectionnez « alter role '|| rôle ||' non identifié;' de DBA_ROLES où password_required = 'OUI' et le rôle non (sélectionnez le rôle de dba_application_roles);

L'activation de rôles par défaut (accordés à un utilisateur par défaut) qui sont également protégés par mot changé dans Oracle 10g, la version 10.2.0.5 (au moins pour notre copie). Dans la version 10.2.0.5, ne deviendrait plus un mot de passe protégé rôle activé par défaut. Il a dû être tourné spécifiquement avec le mot de passe approprié.

Cela n'a pas été documenté pour autant que nous pourrions dire. Mais quand nos systèmes ont été mis à niveau de 10.2.0.4 à 10.2.0.5, ce changement a brisé plusieurs de nos systèmes, et nous avons dû créer en parallèle des rôles non protégés pour nos comptes fonctionnels qui ne dispose d'aucun mécanisme pour activer les rôles par défaut. Essentiellement, nous avons créé old_role_batch sans mot de passe comme une copie de old_role whish a été protégé par mot.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top