Cette section présente des méthodes sur un objet Connection
pour gérer l'accès à l'instance et aux graphsets qu'il contient, 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 graph, qui sont en réalité des noms de commandes UQL classés selon leur champ d'application opérationnel.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
List<Privilege>
: Tous les privilèges système et les privilèges graph.
// Récupère tous les privilèges système et les privilèges graph
var res = await ultipa.ShowPrivilege();
var graphL = new List<string>();
var systemL = new List<string>();
foreach (var item in res)
{
if (item.Level == 0)
{
graphL.Add(item.Name);
}
else
{
systemL.Add(item.Name);
}
}
Console.WriteLine("Graph privileges: ");
Console.WriteLine(JsonConvert.SerializeObject(graphL));
Console.WriteLine("System privileges: ");
Console.WriteLine(JsonConvert.SerializeObject(systemL));
Graph privileges:
["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"]
System privileges:
["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 inclut les privilèges système, les privilèges graph, les privilèges propriété et d'autres stratégies.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
List<Policy>
: La liste de toutes les stratégies dans l'instance.
// Récupère toutes les stratégies et imprime leurs informations
var res = await ultipa.ShowPolicy();
foreach (var item in res)
{
Console.WriteLine($"Policy '{item.Name}' include:");
Console.WriteLine(
"- System privileges: " + JsonConvert.SerializeObject(item.SystemPrivileges)
);
Console.WriteLine(
"- Graph privileges: " + JsonConvert.SerializeObject(item.GraphPrivileges)
);
Console.WriteLine(
"- Property privileges:" + JsonConvert.SerializeObject(item.PropertyPrivileges)
);
Console.WriteLine("- Policies:" + JsonConvert.SerializeObject(item.SubPolicies));
}
Policy 'operator' include:
- System privileges: ["MOUNT_GRAPH","TRUNCATE","SHOW_GRAPH"]
- Graph privileges: {"miniCircle":["UPDATE","INSERT","TEMPLATE","UPSERT","AUTONET"]}
- Property privileges:{"node":{"read":[["*","*","*"]],"write":[["*","*","*"],["miniCircle","account","*"]],"deny":[]},"edge":{"read":[["*","*","*"]],"write":[["*","*","*"]],"deny":[]}}
- Policies:[]
Policy 'manager' include:
- System privileges: ["DROP_POLICY","COMPACT"]
- Graph privileges: {"*":["CREATE_INDEX","DROP_TRIGGER","CREATE_FULLTEXT"]}
- Property privileges:{"node":{"read":[["*","*","*"]],"write":[["*","*","*"]],"deny":[]},"edge":{"read":[["*","*","*"]],"write":[["*","*","*"]],"deny":[]}}
- Policies:["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.
Retourne :
Policy
: La stratégie récupérée.
// Récupère une stratégie 'operator' et imprime ses informations
var res = await ultipa.GetPolicy("operator");
Console.WriteLine("Policy 'operator' includes:");
Console.WriteLine(
"- System privileges: " + JsonConvert.SerializeObject(res.SystemPrivileges)
);
Console.WriteLine(
"- Graph privileges: " + JsonConvert.SerializeObject(res.GraphPrivileges)
);
Console.WriteLine(
"- Property privileges: " + JsonConvert.SerializeObject(res.PropertyPrivileges)
);
Console.WriteLine("- Policies: " + JsonConvert.SerializeObject(res.SubPolicies));
Policy 'operator' includes:
- System privileges: ["MOUNT_GRAPH","TRUNCATE","SHOW_GRAPH"]
- Graph privileges: {"miniCircle":["UPDATE","INSERT","TEMPLATE","UPSERT","AUTONET"]}
- Property privileges: {"node":{"read":[["*","*","*"]],"write":[["*","*","*"],["miniCircle","account","*"]],"deny":[]},"edge":{"read":[["*","*","*"]],"write":[["*","*","*"]],"deny":[]}}
- Policies: []
CreatePolicy()
Crée une stratégie dans l'instance.
Paramètres :
Policy
: La stratégie à modifier; le champName
doit être défini,SystemPrivileges
,GraphPrivileges
,PropertyPrivileges
etPolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
UqlResponse
: Résultat de la requête.
// Crée une nouvelle stratégie 'sales' et la récupère ensuite
Policy policy = new Policy()
{
Name = "sales",
// Privilèges système
SystemPrivileges = new List<string> { "SHOW_GRAPH", "TRUNCATE" },
// Privilèges graph
GraphPrivileges = new()
{
{
"miniCircle",
new List<string>
{
"SHOW_ALGO",
"ALGO",
"RESUME_TASK",
"UFE",
"CREATE_PROPERTY",
}
},
{
"lcc",
new List<string> { "UPDATE", "INSERT", "DELETE", "UPSERT" }
},
},
//Privilèges propriété
PropertyPrivileges = new PropertyPrivilegeMap()
{
NodePrivileges = new PropertyPrivilegeMapItem()
{
Read = new List<List<string>>()
{
new() { "miniCircle", "account", "*" },
new() { "miniCircle", "movie", "name" },
},
Write = new List<List<string>>()
{
new() { "lcc", "*", "*" },
},
Deny = new List<List<string>>(),
},
},
// Politiques
SubPolicies = new List<string> { "manager", "operator" },
};
var newPol = await ultipa.CreatePolicy(policy);
// Imprime la nouvelle stratégie 'sales'
var res = await ultipa.GetPolicy("sales");
Console.WriteLine($"Policy '{res.Name}' includes:");
Console.WriteLine(
"- System privileges: " + JsonConvert.SerializeObject(res.SystemPrivileges)
);
Console.WriteLine(
"- Graph privileges: " + JsonConvert.SerializeObject(res.GraphPrivileges)
);
Console.WriteLine(
"- Property privileges: " + JsonConvert.SerializeObject(res.PropertyPrivileges)
);
Console.WriteLine("- Policies: " + JsonConvert.SerializeObject(res.SubPolicies));
Policy 'sales' includes:
- System privileges: ["SHOW_GRAPH","TRUNCATE"]
- Graph privileges: {"miniCircle":["SHOW_ALGO","ALGO","RESUME_TASK","CREATE_PROPERTY","UFE"],"lcc":["UPDATE","INSERT","DELETE","UPSERT"]}
- Property privileges: {"node":{"read":[["*","*","*"],["miniCircle","account","*"],["miniCircle","movie","name"]],"write":[["*","*","*"],["lcc","*","*"]],"deny":[]},"edge":{"read":[["*","*","*"],["*","*","*"]],"write":[["*","*","*"],["*","*","*"]],"deny":[]}}
- Policies: ["manager","operator"]
AlterPolicy()
Modifie les privilèges système, les privilèges graph, les privilèges propriété et les stratégies d'une stratégie existante dans l'instance par son nom.
Paramètres :
Policy
: La stratégie à modifier; le champName
doit être défini,SystemPrivileges
,GraphPrivileges
,PropertyPrivileges
etPolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
UqlResponse
: Résultat de la requête.
// Modifie la stratégie 'sales' et la récupère ensuite
Policy policy = new Policy()
{
Name = "sales",
SystemPrivileges = new List<string> { "SHOW_GRAPH" },
GraphPrivileges = new()
{
{
"miniCircle",
new List<string> { "FIND" }
},
{
"lcc",
new List<string> { "UPDATE" }
},
},
SubPolicies = new List<string> { "operator" },
}
var alterPol = await ultipa.AlterPolicy(policy);
Console.WriteLine(alterPol.Status.ErrorCode);
var res = await ultipa.GetPolicy("sales");
Console.WriteLine($"Policy '{res.Name}' includes:");
Console.WriteLine(
"- System privileges: " + JsonConvert.SerializeObject(res.SystemPrivileges)
);
Console.WriteLine(
"- Graph privileges: " + JsonConvert.SerializeObject(res.GraphPrivileges)
);
Console.WriteLine(
"- Property privileges: " + JsonConvert.SerializeObject(res.PropertyPrivileges)
);
Console.WriteLine("- Policies: " + JsonConvert.SerializeObject(res.SubPolicies));
Success
Policy 'sales' includes:
- System privileges: ["SHOW_GRAPH"]
- Graph privileges: {"miniCircle":["FIND"],"lcc":["UPDATE"]}
- Property privileges: {"node":{"read":[["*","*","*"],["*","*","*"]],"write":[["*","*","*"],["*","*","*"]],"deny":[]},"edge":{"read":[["*","*","*"],["*","*","*"]],"write":[["*","*","*"],["*","*","*"]],"deny":[]}}
- 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.
Retourne :
UqlResponse
: Résultat de la requête.
// Supprime la stratégie 'sales' et imprime le code d'erreur
var res = await ultipa.DropPolicy("sales");
Console.WriteLine(res.Status.ErrorCode);
Success
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.
Retourne :
List<User>
: La liste de tous les utilisateurs dans l'instance.
// Récupère tous les utilisateurs et imprime les informations du premier retourné
var res = await ultipa.ShowUser();
Console.WriteLine("Username: " + res[0].Username);
Console.WriteLine("Created on: " + res[0].CreatedTime);
Console.WriteLine(
"System privileges: " + JsonConvert.SerializeObject(res[0].SystemPrivileges)
);
Console.WriteLine(
"Graph privileges: " + JsonConvert.SerializeObject(res[0].GraphPrivileges)
);
Console.WriteLine(
"Property privileges: " + JsonConvert.SerializeObject(res[0].GraphPrivileges)
);
Console.WriteLine("Policies: " + JsonConvert.SerializeObject(res[0].Policies));
Username: test006
Created on: 9/1/2023 6:37:56 AM
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: {}
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.
Retourne :
User
: L'utilisateur récupéré.
// Récupère l'utilisateur 'test005' et imprime ses informations
var res = await ultipa.GetUser("test005");
Console.WriteLine("Username: " + res.Username);
Console.WriteLine("Created on: " + res.CreatedTime);
Console.WriteLine(
"System privileges: " + JsonConvert.SerializeObject(res.SystemPrivileges)
);
Console.WriteLine("Graph privileges: " + JsonConvert.SerializeObject(res.GraphPrivileges));
Console.WriteLine(
"Property privileges: " + JsonConvert.SerializeObject(res.GraphPrivileges)
);
Console.WriteLine("Policies: " + JsonConvert.SerializeObject(res.Policies));
Username: test005
Created on: 8/31/2023 9:15:59 AM
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: {}
Policies: ["operator"]
CreateUser()
Crée un utilisateur dans l'instance.
Paramètres :
User
: L'utilisateur à créer; les champsUsername
etPassword
doivent être définis,SystemPrivilegess
,GraphPrivileges
,PropertyPrivileges
etPolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
UqlResponse
: Résultat de la requête.
// Crée un nouvel utilisateur 'CSharpUser' et imprime le code d'erreur
User newUser = new User()
{
Username = "CSharpUser",
Password = "Password",
Privileges = new Policy()
{
GraphPrivileges = new()
{
{
"miniCircle",
new List<string>
{
"SHOW_ALGO",
"ALGO",
"RESUME_TASK",
"UFE",
"CREATE_PROPERTY",
}
},
},
SystemPrivileges = new() { "SHOW_GRAPH", "TRUNCATE" },
PropertyPrivileges = new PropertyPrivilegeMap()
{
NodePrivileges = new PropertyPrivilegeMapItem()
{
Read = new List<List<string>>()
{
new() { "miniCircle", "account", "*" },
new() { "miniCircle", "movie", "name" },
},
Write = new List<List<string>>()
{
new() { "lcc", "*", "*" },
},
Deny = new List<List<string>>(),
},
},
SubPolicies = new() { "manager", "operator" },
},
};
Success
AlterUser()
Modifie le mot de passe, les privilèges système, les privilèges graph, les privilèges propriété et les politiques d'un utilisateur de base de données existant dans l'instance par son nom d'utilisateur.
Paramètres :
User
: L'utilisateur à modifier; le champUsername
doit être défini,Password
,SystemPrivilegess
,GraphPrivileges
,PropertyPrivileges
etPolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
UqlResponse
: Résultat de la requête.
// Modifie l'utilisateur 'CSharpUser' et imprime le code d'erreur
User newUser = new User()
{
Username = "CSharpUser",
Password = "Password123",
Privileges = new Policy()
{
GraphPrivileges = new()
{
{
"miniCircle",
new() { "FIND" }
},
{
"lcc",
new() { "UPDATE" }
},
},
SystemPrivileges = new() { "SHOW_GRAPH" },
SubPolicies = new() { "operator" },
},
};
var res = await ultipa.AlterUser(newUser);
Console.WriteLine(res.Status.ErrorCode);
Success
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.
Retourne :
UqlResponse
: Résultat de la requête.
// Supprime l'utilisateur 'CSharpUser' et imprime le code d'erreur
var res = await ultipa.DropUser("CSharpUser");
Console.WriteLine(res.Status.ErrorCode);
Success
GrantPolicy()
Accorde des stratégies à un utilisateur de base de données dans l'instance.
Paramètres :
string
: Nom d'utilisateur.List<string>
: Stratégies à accorder.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
UqlResponse
: Résultat de la requête.
// Accorde les stratégies 'operator' et 'manager' à l'utilisateur 'johndoe' et imprime le code d'erreur
var res = await ultipa.GrantPolicy("johndoe", policies: new() { "operator", "manager" });
Console.WriteLine(res.Status.ErrorCode);
Success
RevokePolicy()
Révoque des stratégies à un utilisateur de base de données dans l'instance.
Paramètres :
string
: Nom d'utilisateur.List<string>
: Stratégies à révoquer.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Retourne :
UqlResponse
: Résultat de la requête.
var res = await ultipa.RevokePolicy("johndoe", policies: new() { "operator", "manager" });
Console.WriteLine(res.Status.ErrorCode);
Success
Exemple Complet
using System.Data;
using System.Security.Cryptography.X509Certificates;
using System.Xml.Linq;
using Google.Protobuf.WellKnownTypes;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using UltipaService;
using UltipaSharp;
using UltipaSharp.api;
using UltipaSharp.configuration;
using UltipaSharp.connection;
using UltipaSharp.exceptions;
using UltipaSharp.structs;
using UltipaSharp.utils;
using Logger = UltipaSharp.utils.Logger;
using Property = UltipaSharp.structs.Property;
using Schema = UltipaSharp.structs.Schema;
class Program
{
static async Task Main(string[] args)
{
// Connexion configurations
//URI example: Hosts=new[]{"mqj4zouys.us-east-1.cloud.ultipa.com:60010"}
var myconfig = new UltipaConfig()
{
Hosts = new[] { "192.168.1.85:60061", "192.168.1.86:60061", "192.168.1.87:60061" },
Username = "***",
Password = "***",
};
// Établit la connexion à la base de données
var ultipa = new Ultipa(myconfig);
var isSuccess = ultipa.Test();
Console.WriteLine(isSuccess);
// Configurations de requête
RequestConfig requestConfig = new RequestConfig()
{
UseMaster = true,
Graph = "miniCircle",
};
// Récupère toutes les stratégies et imprime leurs informations
var res = await ultipa.ShowPolicy();
foreach (var item in res)
{
Console.WriteLine($"Policy '{item.Name}' include:");
Console.WriteLine(
"- System privileges: " + JsonConvert.SerializeObject(item.SystemPrivileges)
);
Console.WriteLine(
"- Graph privileges: " + JsonConvert.SerializeObject(item.GraphPrivileges)
);
Console.WriteLine(
"- Property privileges:" + JsonConvert.SerializeObject(item.PropertyPrivileges)
);
Console.WriteLine("- Policies:" + JsonConvert.SerializeObject(item.SubPolicies));
}
}
}