Cette section présente les méthodes sur un objet Connection
pour gérer l'accès à l'instance et aux graphsets qui s'y trouvent, y compris les privilèges, les stratégies et les utilisateurs.
Chaque exemple se concentre uniquement sur l'utilisation de la méthode. Pour un exemple de code complet, veuillez vous référer à l'exemple complet.
Privilège
ShowPrivilege()
Récupère tous les privilèges système et les privilèges de graph, qui sont en fait des noms de commandes UQL classés selon leur champ d'application.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
[]Privilege
: Tous les privilèges système et privilèges de graph.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Récupère tous les privilèges système et privilèges de graph
myPri, err := conn.ShowPrivilege(nil)
if err != nil {
println(err)
}
PGraph := ""
for i, gp := range myPri[0].GraphPrivileges {
if i > 0 {
PGraph += ", "
}
PGraph += gp
}
println("GraphPrivileges:", "\n", PGraph)
SGraph := ""
for i, sp := range myPri[0].SystemPrivileges {
if i > 0 {
SGraph += ", "
}
SGraph += sp
}
println("SystemPrivileges:", "\n", SGraph)
GraphPrivileges:
TEMPLATE, KHOP, AB, SPREAD, AUTONET, FIND, FIND_NODE, FIND_EDGE, INSERT, EXPORT, UPSERT, UPDATE, DELETE, DELETE_NODE, DELETE_EDGE, CREATE_SCHEMA, DROP_SCHEMA, ALTER_SCHEMA, SHOW_SCHEMA, CREATE_TRIGGER, DROP_TRIGGER, SHOW_TRIGGER, CREATE_BACKUP, RESTORE_BACKUP, SHOW_BACKUP, CREATE_PROPERTY, DROP_PROPERTY, ALTER_PROPERTY, SHOW_PROPERTY, CREATE_FULLTEXT, DROP_FULLTEXT, SHOW_FULLTEXT, CREATE_INDEX, DROP_INDEX, SHOW_INDEX, LTE, UFE, CLEAR_TASK, STOP_TASK, PAUSE_TASK, RESUME_TASK, SHOW_TASK, ALGO, SHOW_ALGO
SystemPrivileges:
TRUNCATE, COMPACT, CREATE_GRAPH, SHOW_GRAPH, DROP_GRAPH, ALTER_GRAPH, MOUNT_GRAPH, UNMOUNT_GRAPH, TOP, KILL, STAT, SHOW_POLICY, CREATE_POLICY, DROP_POLICY, ALTER_POLICY, SHOW_USER, CREATE_USER, DROP_USER, ALTER_USER, GRANT, REVOKE, SHOW_PRIVILEGE
Stratégie
ShowPolicy()
Récupère toutes les stratégies de l'instance. Une stratégie comprend des privilèges système, des privilèges de graph, des privilèges de propriété et d'autres stratégies.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
[]Policy
: La liste de toutes les stratégies dans l'instance.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Récupère toutes les stratégies et affiche leurs informations
myPol, err := conn.ShowPolicy(nil)
if err != nil {
println(err)
}
for i := 0; i < len(myPol); i++ {
println("Policy name:", myPol[i].Name)
println("Graph privileges include:", "\n", utils.JSONString(myPol[i].GraphPrivileges))
println("System privileges include:", "\n", utils.JSONString(myPol[i].SystemPrivileges))
println("Property privlileges include:", "\n", utils.JSONString(myPol[i].PropertyPrivileges))
println("Policies include:", utils.JSONString(myPol[i].Policies), "\n")
}
Policy name: operator
Graph privileges include:
{"miniCircle":["UPDATE","INSERT","TEMPLATE","UPSERT","AUTONET"]}
System privileges include:
["MOUNT_GRAPH","TRUNCATE","SHOW_GRAPH"]
Property privlileges include:
{"edge":{"deny":[],"read":[],"write":[]},"node":{"deny":[],"read":[],"write":[["miniCircle","account","*"]]}}
Policies include: []
Policy name: manager
Graph privileges include:
{"*":["CREATE_INDEX","DROP_TRIGGER","CREATE_FULLTEXT"]}
System privileges include:
["DROP_POLICY","COMPACT"]
Property privlileges include:
{"edge":{"deny":[],"read":[],"write":[]},"node":{"deny":[],"read":[],"write":[]}}
Policies include: ["operator"]
GetPolicy()
Récupère une stratégie de l'instance par son nom.
Paramètres :
string
: Nom de la stratégie.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
Policy
: La stratégie récupérée.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Récupère une stratégie 'operator' et affiche ses informations
myPol, err := conn.GetPolicy("operator", nil)
if err != nil {
println(err)
}
println("Policy", myPol.Name, "includes:")
println("- System privileges:", utils.JSONString(myPol.SystemPrivileges))
println("- Graph privileges:", utils.JSONString(myPol.GraphPrivileges))
println("- Proverty privileges:", utils.JSONString(myPol.PropertyPrivileges))
println("- Policies:", utils.JSONString(myPol.Policies))
Policy operator includes:
- System privileges: ["MOUNT_GRAPH","TRUNCATE","SHOW_GRAPH"]
- Graph privileges: {"miniCircle":["UPDATE","INSERT","TEMPLATE","UPSERT","AUTONET"]}
- Proverty privileges: {"edge":{"deny":[],"read":[],"write":[]},"node":{"deny":[],"read":[],"write":[["miniCircle","account","*"]]}}
- Policies: []
CreatePolicy()
Crée une stratégie dans l'instance.
Paramètres :
Policy
: La stratégie à être modifiée ; le champName
doit être renseigné,SystemPrivileges
,GraphPrivileges
,PropertyPrivileges
etPolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
Response
: Résultat de la requête.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Crée une nouvelle stratégie 'sales' et la récupère ensuite
graphPrivileges := structs.GraphPrivileges{
"miniCircle": []string{"FIND", "SPREAD", "AUTONET", "AB", "TEMPLATE", "KHOP"},
"lcc": []string{"UPDATE", "INSERT", "DELETE", "UPSERT"},
}
propertyPrivileges := structs.PropertyPrivileges{
"node": {
"read": {{"miniCircle", "account", "*"}, {"miniCircle", "movie", "name"}},
"write": {{"lcc", "*", "*"}},
"deny": {},
},
"edge": {
"read": {{"*", "*", "*"}},
"write": {{"*", "*", "*"}},
"deny": {},
},
}
var policy = structs.Policy{
Name: "sales",
GraphPrivileges: graphPrivileges,
SystemPrivileges: []string{"SHOW_GRAPH", "TRUNCATE"},
PropertyPrivileges: propertyPrivileges,
Policies: []string{"manager", "operator"},
}
newPol, err := conn.CreatePolicy(&policy, nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("Policy is created:", newPol.IsSuccess())
// Affiche la nouvelle stratégie 'sales'
myPol, err := conn.GetPolicy("sales", nil)
if err != nil {
println(err)
}
println("Policy", myPol.Name, "includes:")
println("- System privileges:", utils.JSONString(myPol.SystemPrivileges))
println("- Graph privileges:", utils.JSONString(myPol.GraphPrivileges))
println("- Proverty privileges:", utils.JSONString(myPol.PropertyPrivileges))
println("- Policies:", utils.JSONString(myPol.Policies))
Policy is created: true
Policy sales includes:
- System privileges: ["SHOW_GRAPH","TRUNCATE"]
- Graph privileges: {"lcc":["UPDATE","INSERT","DELETE","UPSERT"],"miniCircle":["FIND","SPREAD","AUTONET","AB","TEMPLATE","KHOP"]}
- Proverty privileges: {"edge":{"deny":[],"read":[["*","*","*"]],"write":[["*","*","*"]]},"node":{"deny":[],"read":[["miniCircle","account","*"],["miniCircle","movie","name"]],"write":[["lcc","*","*"]]}}
- Policies: ["manager","operator"]
AlterPolicy()
Modifie les privilèges système, les privilèges de graph, les privilèges de propriété et les stratégies d'une stratégie existante dans l'instance par son nom.
Paramètres :
Policy
: La stratégie à être modifiée ; le champName
doit être renseigné,SystemPrivileges
,GraphPrivileges
,PropertyPrivileges
etPolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
Response
: Résultat de la requête.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Modifie la stratégie 'sales' et la récupère ensuite
graphPrivileges := structs.GraphPrivileges{
"miniCircle": []string{"FIND"},
"lcc": []string{"UPDATE"},
}
var policy = structs.Policy{
Name: "sales",
GraphPrivileges: graphPrivileges,
SystemPrivileges: []string{"SHOW_GRAPH"},
Policies: []string{"operator"},
}
newPol, err := conn.AlterPolicy(&policy, nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("Policy is altered:", newPol.IsSuccess())
time.Sleep(2 * time.Second)
myPol, err := conn.GetPolicy("sales", nil)
if err != nil {
println(err)
}
println("Policy", myPol.Name, "includes:")
println("- System privileges:", utils.JSONString(myPol.SystemPrivileges))
println("- Graph privileges:", utils.JSONString(myPol.GraphPrivileges))
println("- Proverty privileges:", utils.JSONString(myPol.PropertyPrivileges))
println("- Policies:", utils.JSONString(myPol.Policies))
Policy is altered: true
Policy sales includes:
- System privileges: ["SHOW_GRAPH"]
- Graph privileges: {"lcc":["UPDATE"],"miniCircle":["FIND"]}
- Proverty privileges: {"edge":{"deny":[],"read":[["*","*","*"]],"write":[["*","*","*"]]},"node":{"deny":[],"read":[["miniCircle","account","*"],["miniCircle","movie","name"]],"write":[["lcc","*","*"]]}}
- Policies: ["operator"]
DropPolicy()
Supprime une stratégie de l'instance par son nom.
Paramètres :
string
: Nom de la stratégie.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
Response
: Résultat de la requête.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Supprime la stratégie 'sales' et affiche le code d'erreur
myPol, err := conn.DropPolicy("sales", nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("Policy is deleted:", myPol.IsSuccess())
Policy is deleted: true
Utilisateur
ShowUser()
Récupère tous les utilisateurs de la base de données de l'instance.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
[]User
: La liste de tous les utilisateurs dans l'instance.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Récupère tous les utilisateurs et affiche les informations du premier retourné
userList, err := conn.ShowUser(nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("Username:", userList[0].UserName)
println("Created at:", userList[0].Create)
println("System privileges:", "\n", utils.JSONString(userList[0].SystemPrivileges))
println("Graph privileges:", "\n", utils.JSONString(userList[0].GraphPrivileges))
println("Property privileges:", "\n", utils.JSONString(userList[0].PropertyPrivileges))
println("Policies:", "\n", utils.JSONString(userList[0].Policies))
Username: test006
Created at: 1970-01-01 08:00:00
System privileges:
["SHOW_PRIVILEGE","ALTER_USER","DROP_USER","CREATE_USER","SHOW_GRAPH","ALTER_GRAPH","DROP_GRAPH","COMPACT","MOUNT_GRAPH","TOP","CREATE_GRAPH","STAT","UNMOUNT_GRAPH","SHOW_POLICY","TRUNCATE","KILL","ALTER_POLICY","CREATE_POLICY","DROP_POLICY","SHOW_USER"]
Graph privileges:
{}
Property privileges:
{"edge":{"deny":[["*","*","*"]],"read":[],"write":[]},"node":{"deny":[["*","*","*"]],"read":[],"write":[]}}
Policies:
["operator"]
GetUser()
Récupère un utilisateur de la base de données de l'instance par son nom d'utilisateur.
Paramètres :
string
: Nom d'utilisateur.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
User
: L'utilisateur récupéré.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Récupère l'utilisateur 'test005' et affiche ses informations
myUser, err := conn.GetUser("test005", nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("Username:", myUser.UserName)
println("Created at:", myUser.Create)
println("System privileges:", "\n", utils.JSONString(myUser.SystemPrivileges))
println("Graph privileges:", "\n", utils.JSONString(myUser.GraphPrivileges))
println("Property privileges:", "\n", utils.JSONString(myUser.PropertyPrivileges))
println("Policies:", "\n", utils.JSONString(myUser.Policies))
Username: test005
Created at: 1970-01-01 08:00:00
System privileges:
["SHOW_PRIVILEGE","ALTER_USER","DROP_USER","CREATE_USER","SHOW_GRAPH","ALTER_GRAPH","DROP_GRAPH","COMPACT","MOUNT_GRAPH","TOP","CREATE_GRAPH","STAT","UNMOUNT_GRAPH","SHOW_POLICY","TRUNCATE","KILL","ALTER_POLICY","CREATE_POLICY","DROP_POLICY","SHOW_USER"]
Graph privileges:
{}
Property privileges:
{"edge":{"deny":[],"read":[],"write":[]},"node":{"deny":[],"read":[],"write":[]}}
Policies:
["operator"]
CreateUser()
Crée un utilisateur de base de données dans l'instance.
Paramètres :
CreateUser
: L'utilisateur à créer ; les champsUserName
etPassWord
doivent être renseignés,SystemPrivilegess
,GraphPrivileges
,PropertyPrivileges
etPolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
Response
: Résultat de la requête.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Crée un nouvel utilisateur 'GoUser' et affiche le code d'erreur
graphPrivileges := structs.GraphPrivileges{
"miniCircle": []string{"FIND", "SPREAD", "AUTONET", "AB", "TEMPLATE", "KHOP"},
"lcc": []string{"UPDATE", "INSERT", "DELETE", "UPSERT"},
}
var user = structs.CreateUser{
UserName: "GoUser",
PassWord: "Password",
SystemPrivileges: []string{"SHOW_GRAPH", "TRUNCATE"},
GraphPrivileges: graphPrivileges,
Policies: []string{"manager", "operator"},
}
myUser, err := conn.CreateUser(&user, nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("User is created:", myUser.IsSuccess())
User is created: true
AlterUser()
Modifie le mot de passe, les privilèges système, les privilèges de graph, les privilèges de propriété et les stratégies d'un utilisateur existant de la base de données dans l'instance par son nom d'utilisateur.
Paramètres :
AlterUser
: L'utilisateur à être modifié ; le champUserName
doit être renseigné,PassWord
,SystemPrivilegess
,GraphPrivileges
,PropertyPrivileges
etPolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
Response
: Résultat de la requête.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Modifie l'utilisateur 'GoUser' et affiche le code d'erreur
graphPrivileges := structs.GraphPrivileges{
"miniCircle": []string{"FIND"},
}
var user = structs.AlterUser{
UserName: "GoUser",
SystemPrivileges: []string{"SHOW_GRAPH"},
GraphPrivileges: graphPrivileges,
Policies: []string{"operator"},
}
myUser, err := conn.AlterUser(&user, nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("User is altered:", myUser.IsSuccess())
User is altered: true
DropUser()
Supprime un utilisateur de la base de données de l'instance par son nom d'utilisateur.
Paramètres :
string
: Nom d'utilisateur.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
Response
: Résultat de la requête.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Supprime l'utilisateur 'GoUser' et affiche le code d'erreur
myUser, err := conn.DropUser("GoUser", nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("User is deleted:", myUser.IsSuccess())
User is deleted: true
GrantPolicy()
Accorde de nouveaux privilèges système, privilèges de graph, privilèges de propriété et stratégies à un utilisateur de base de données dans l'instance.
Paramètres :
string
: Nom d'utilisateur.GraphPrivileges
: Privilèges de graph à accorder; mettre ànil
pour ignorer l'attribution de privilèges de graph.[]string
: Privilèges système à accorder ; mettre à[]string{}
pour ignorer l'attribution de privilèges système.PropertyPrivileges
: Privilèges de propriété à accorder ; mettre ànil
pour ignorer l'attribution de privilèges de propriété.[]string
: Stratégies à accorder ; mettre à[]string{}
pour ignorer l'attribution de stratégies.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
Response
: Résultat de la requête.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
// Accorde les privilèges et stratégies à l'utilisateur 'johndoe' et affiche le code d'erreur
graphPrivileges := structs.GraphPrivileges{
"miniCircle": []string{"FIND", "SPREAD", "AUTONET", "AB", "TEMPLATE", "KHOP"},
"lcc": []string{"UPDATE", "INSERT", "DELETE", "UPSERT"},
}
myPol, err := conn.GrantPolicy("johndoe", &graphPrivileges, []string{"SHOW_GRAPH", "TRUNCATE"}, nil, []string{"manager", "operator"}, nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("Policy is granted:", myPol.IsSuccess())
Policy is granted: true
RevokePolicy()
Révoque les privilèges système, privilèges de graph, privilèges de propriété et stratégies d'un utilisateur de base de données dans l'instance.
Paramètres :
string
: Nom d'utilisateur.GraphPrivileges
: Privilèges de graph à révoquer; mettre ànil
pour ignorer la révocation des privilèges de graph.[]string
: Privilèges système à révoquer ; mettre à[]string{}
pour ignorer la révocation des privilèges système.PropertyPrivileges
: Privilèges de propriété à révoquer ; mettre ànil
pour ignorer la révocation des privilèges de propriété.[]string
: Stratégies à révoquer ; mettre à[]string{}
pour ignorer la révocation des stratégies.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête. Sinil
est fourni, la fonction utilisera les paramètres de configuration par défaut.
Retourne :
Response
: Résultat de la requête.error
: Un objet erreur contenant les détails de tout problème survenu.nil
est retourné si l'opération est réussie.
graphPrivileges := structs.GraphPrivileges{
"miniCircle": []string{"FIND", "SPREAD", "AUTONET", "AB", "TEMPLATE", "KHOP"},
"default": []string{"UPDATE", "INSERT", "DELETE", "UPSERT"},
}
propertyPrivileges := structs.PropertyPrivileges{
"node": {
"read": {{"miniCircle", "account", "*"}, {"miniCircle", "movie", "name"}},
"write": {{"default", "*", "*"}},
"deny": {},
},
"edge": {
"read": {{"*", "*", "*"}},
"write": {{"miniCircle", "*", "*"}},
"deny": {},
},
}
myPol1, err := conn.RevokePolicy("johndoe", &graphPrivileges, []string{}, nil, []string{}, nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("Policy is revoked:", myPol1.IsSuccess())
myPol2, err := conn.RevokePolicy("Tester", &graphPrivileges, []string{"SHOW_GRAPH", "TRUNCATE"}, &propertyPrivileges, []string{"manager", "operator"}, nil)
if err != nil {
println(utils.JSONString(err.Error()))
}
println("Policy is revoked:", myPol2.IsSuccess())
Policy is revoked: true
Policy is revoked: true
Exemple Complet
package main
import (
"github.com/ultipa/ultipa-go-sdk/sdk"
"github.com/ultipa/ultipa-go-sdk/sdk/configuration"
"github.com/ultipa/ultipa-go-sdk/utils"
)
func main() {
// Connection configurations
//URI example: Hosts:=[]string{"mqj4zouys.us-east-1.cloud.ultipa.com:60010"}
config, _ := configuration.NewUltipaConfig(&configuration.UltipaConfig{
Hosts: []string{"192.168.1.85:60061", "192.168.1.86:60061", "192.168.1.87:60061"},
Username: "***",
Password: "***",
})
// Etablit la connexion à la base de données
conn, _ := sdk.NewUltipa(config)
// Récupère toutes les stratégies et affiche leurs informations
myPol, err := conn.ShowPolicy(nil)
if err != nil {
println(err)
}
for i := 0; i < len(myPol); i++ {
println("Policy name:", myPol[i].Name)
println("Graph privileges include:", "\n", utils.JSONString(myPol[i].GraphPrivileges))
println("System privileges include:", "\n", utils.JSONString(myPol[i].SystemPrivileges))
println("Property privlileges include:", "\n", utils.JSONString(myPol[i].PropertyPrivileges))
println("Policies include:", utils.JSONString(myPol[i].Policies), "\n")
}
println(utils.JSONString(newNodeSchema))
}