Vue et problème de droits [ Oracle ] - SQL/NoSQL - Programmation
Marsh Posté le 12-07-2007 à 15:31:16
Parce que SUNOPSIS a le droit à l'instruction "create" surtout.
Je crois même que t'as le droit de créer une vue sur une table om tu n'as pas le droit de faire SELECT dessus.
Par contre, tu ne pourras pas créer une vue si t'as pas l'autorisation CREATE dans la base.
PS : Même mieux, si tu as des informations sensibles dans une table, tu peux créer une vue dessus ne laissant pas apparaître les informations sensibles, mettre un grant à tout le monde sur la vue, et faire un deny à tout le monde sur la table : les gens pourront lire la table à travers la vue, sans jamais pouvoir accéder à la table directement (et donc tomber sur les infos sensibles).
C'est notamment comme ça que je sécurise mes bases WEB : j'use et abuse de PS et vues auxquelles je donne des autorisation à mon user "web". Puis le lui colle un deny de tous les autres objets. Ceci dit, je fais ça sous SQL Server, je ne sais pas ce que ça donne avec Oracle, mais le fonctionnement devrait être le même.
Marsh Posté le 12-07-2007 à 15:48:08
Désolé mais j'ai beau relire 3 fois ton message, je ne vois pas de réponse à ma question donc je me suis certainement mal exprimé !
Je souhaite créer un ROLE 'majauto' qui a les droits pour faire des SELECT sur certaines tables du SCHEMA de 'user2'.
J'affecte ce ROLE à un utilisateur SUNOPSIS.
Je n'arrive aps à créer de VUE sous le SCHEMA 'sunopsis' via les droits accordés par le ROLE 'majauto'
----
Si je ne passe pas par un ROLE pour attribuer les droits d'accès mais que j'autorise le SELECT directment sur le SCHEMA 'sunopsis'; je peux créer ma VUE.
Marsh Posté le 12-07-2007 à 15:58:20
ah ouais, je viens de relire mieux ton script.
chelou ton machin.
sunopsis n'aurait pas un autre rôle contradictoire à majauto ?
quand tu lui enlèves le droit select, tu lui colle un DENY, ou tu ne fais que supprimer le GRANT ?
effectivement, si tu colles un DENY sur le compte directement, même s'il a un GRANT via son rôle, c'est le DENY qui prime.
(par contre, je pige pas le rapport entre le droit SELECT et l'autorisation de créer une vue... oracle serait-il encore plus pourri que ce que j'imaginais ?)
Marsh Posté le 12-07-2007 à 16:00:21
normalement, seul le propriétaire du schema a le droit de donner des privilèges sur ces objets.
tu passes bien les grants avec le owner ?
Marsh Posté le 12-07-2007 à 16:34:28
alors pas de deny, juste des grant et des revoke jusqu'à présent.
Pour passer les droits, j'utilise le compte sys as sysdba donc c'est peut être pour ça que ça déconne !
Je vais tester avec le compte du proprio
Marsh Posté le 21-08-2007 à 17:20:27
bonjour je suis actuellement en stage et je commence a manipuler oracle 9i
le probleme c ke je ne suis pas administrateur de ma base et je veu kand meme créer des base de donnée
mais une fois tapez create database nom_base ; il me met "ORA-01031: privilèges insuffisants"
je voulai savoir comment faire pour avoir tous les privileges pour pouvoir créer ma base de donnée ou si il y a peut etre un login et mot de passe pour administrateur par defauts merci d'avance
Marsh Posté le 21-08-2007 à 20:01:34
pas besoin de faire un create database sous oracle
par defaut, ta base de donnée est celle de ton utilisateur courant, il lui faut juste le droit "resource" afin de pouvoir creer des objets ( si tu arrives a faire un create table, c'est tout bon )
objets sur lesquels tu aura plein pouvoir
P.S. si tu te connectes en admin, le DBA va t'appeler Arthur
Marsh Posté le 22-08-2007 à 09:37:46
merci ajnag
enfaite j'ai reussi a créer ma propre base ( et differents tables aussi) avec la console oracle enterprise manager mais je n'arrive a me connecter a oracle management server (OMS) alors ke je rentre bien l'utilisateur et le mot de passe
aidez moi svp
Marsh Posté le 26-08-2007 à 08:33:00
bonjour
j'ai reussi a importé une base de donnée mais je ne sais pas comment la lire ni la trouvé donc aidez mois vp merci d'avance
Marsh Posté le 27-08-2007 à 13:31:55
arrives-tu à te connecter en sql+ ?
Marsh Posté le 10-09-2007 à 11:05:49
bonjour je veu me connecter a ma base oracle 9i via vb.net j'ecri le code suivant:
Imports Oracle.DataAccess.Client
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
Public Class Form1
Inherits System.Windows.Forms.Form
Dim MyConnection As OleDbConnection
Dim MyCommand As OleDbCommand
#Region " Code généré par le Concepteur Windows Form "
Public Sub New()
MyBase.New()
'Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
'Ajoutez une initialisation quelconque après l'appel InitializeComponent()
End Sub
'La méthode substituée Dispose du formulaire pour nettoyer la liste des composants.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Requis par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer
'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form
'Elle peut être modifiée en utilisant le Concepteur Windows Form.
'Ne la modifiez pas en utilisant l'éditeur de code.
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Label1 = New System.Windows.Forms.Label
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(184, 24)
Me.Label1.Name = "Label1"
Me.Label1.TabIndex = 0
Me.Label1.Text = "connection2"
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(152, 88)
Me.Button1.Name = "Button1"
Me.Button1.TabIndex = 1
Me.Button1.Text = "Button1"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 273)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.Label1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim str As String
Dim MyConnection = New OleDbConnection("Provider=oraoledb.oracle.1;UserID=rasinfotel;password=05051981;database=moustapha" )
Try
MyConnection.Open()
Catch ex As Exception
MsgBox(" connection failed" )
MsgBox("la connection a echouée" )
MsgBox(ex.Source & " " & Err.Description)
str = "SELECT NOM FROM EMPL"
MyCommand = New OleDbCommand(str, MyConnection)
Dim a As String
Dim myReader As OleDbDataReader = MyCommand.ExecuteReader()
Do While myReader.Read()
a = myReader(0)
Loop
myReader.Close()
MyConnection.Close()
End Try
End Sub
End Class
et sa m'affiche connection echoué alors ke la base et l'utilisateur sont existant et sa m'affiche aussi
""Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans system.data.dll""
donc aider moi svp
Marsh Posté le 12-07-2007 à 10:31:59
Bonjour,
Je ne comprends pas pourquoi si j'ajoute des droits en passant par un role, je peux faire des select mais pas créer des vues se basant sur des select !
Compte Admin
-------------
grant select on dvpt.p_article to majauto;
grant majauto to sunopsis;
Compte Sunopsis
----------------
select * from dvpt.p_article;
--->OK
CREATE or replace VIEW article AS SELECT
* from
dvpt.p_article
;
Error report:
SQL Error: ORA-01031: privilèges insuffisants
Par contre :
Compte Admin
-------------
grant select on dvpt.p_article to sunopsis;
Compte Sunopsis
----------------
select * from dvpt.p_article;
--->OK
CREATE or replace VIEW article AS SELECT
* from
dvpt.p_article
;
CREATE or replace VIEW succeeded.
Ca fonctionne ...
Une idée ?
Merci
Message édité par jeoff le 12-07-2007 à 10:33:34
---------------
Mon blog séduction