Cette section introduit les méthodes sur un objet Connection
pour gérer l'accès à l'instance et aux graphsets qu'elle contient, y compris les privilèges, stratégies et 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 privilèges de graph, qui sont en réalité des noms de commandes UQL classés selon leur champ d'application.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Privilege
: Tous les privilèges système et privilèges de graph.
// Récupère tous les privilèges système et privilèges de graph
let resp = await conn.showPrivilege();
console.log(resp);
{
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, privilèges de graph, privilèges de propriété et autres stratégies.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Policy[]
: La liste de toutes les stratégies dans l'instance.
// Récupère toutes les stratégies et affiche leurs informations
let resp = await conn.showPolicy();
for (let i of resp.data) {
console.log("Policy ", i.name, " includes: "),
console.log("- System privileges: ", i.system_privileges),
console.log("- Graph privileges: ", i.graph_privileges),
console.log("- Property privileges: ", i.property_privileges),
console.log("- Policies: ", i.policies);
}
Policy manager includes:
- 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' ]
Policy operator includes:
- System privileges: [ 'MOUNT_GRAPH', 'TRUNCATE', 'SHOW_GRAPH' ]
- Graph privileges: { miniCircle: [ 'UPDATE', 'INSERT', 'TEMPLATE', 'UPSERT', 'AUTONET' ] }
- Property privileges: {
node: { read: [], write: [ [Array] ], deny: [] },
edge: { read: [], write: [], deny: [] }
}
- Policies: []
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.
Renvoie :
Policy
: La stratégie récupérée.
// Récupère une stratégie 'operator' et affiche ses informations
let resp = await conn.getPolicy("operator");
console.log("Policy ", resp.data.name, " includes: "),
console.log("- System privileges: ", resp.data.system_privileges),
console.log("- Graph privileges: ", resp.data.graph_privileges),
console.log("- Property privileges: ", resp.data.property_privileges),
console.log("- Policies: ", resp.data.policies);
Policy operator includes:
- System privileges: [ 'MOUNT_GRAPH', 'TRUNCATE', 'SHOW_GRAPH' ]
- Graph privileges: { miniCircle: [ 'UPDATE', 'INSERT', 'TEMPLATE', 'UPSERT', 'AUTONET' ] }
- Property privileges: {
node: { read: [], write: [ [Array] ], deny: [] },
edge: { read: [], write: [], deny: [] }
}
- Policies: []
createPolicy()
Crée une stratégie dans l'instance.
Paramètres :
Policy
: La stratégie à créer ; le champname
doit être défini,system_privileges
,graph_privileges
,property_privileges
etpolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Response
: Résultat de la requête.
// Crée une nouvelle stratégie 'sales' et la récupère ensuite
let myCreate = await conn.createPolicy({
name: "sales",
system_privileges: ["SHOW_GRAPH", "TRUNCATE"],
graph_privileges: {
miniCircle: [
"SHOW_ALGO",
"ALGO",
"RESUME_TASK",
"UFE",
"CREATE_PROPERTY",
],
},
property_privileges: {
node: {
read: [],
write: [],
deny: [],
},
edge: {
read: [],
write: [],
deny: [],
},
},
policies: ["manager", "operator"],
});
// Affiche la nouvelle stratégie créée 'sales'
let resp = await conn.getPolicy("sales");
console.log("Policy", resp.data.name, "includes: "),
console.log("- System privileges: ", resp.data.system_privileges),
console.log("- Graph privileges: ", resp.data.graph_privileges),
console.log("- Property privileges: ", resp.data.property_privileges),
console.log("- Policies: ", resp.data.policies);
Policy sales includes:
- System privileges: [ 'SHOW_GRAPH', 'TRUNCATE' ]
- Graph privileges: {
'*': [ 'SHOW_ALGO', 'ALGO', 'RESUME_TASK', 'CREATE_PROPERTY', 'UFE' ]
}
- Property privileges: {
node: { read: [ [Array] ], write: [], deny: [] },
edge: { read: [ [Array] ], write: [], deny: [] }
}
- Policies: [ 'manager', 'operator' ]
alterPolicy()
Modifie les privilèges système, privilèges de graph, privilèges de propriété et 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,system_privileges
,graph_privileges
,property_privileges
etpolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Response
: Résultat de la requête.
// Modifie la stratégie 'sales' et la récupère ensuite
let myCreate = await conn.alterPolicy({
name: "sales",
system_privileges: ["SHOW_GRAPH"],
graph_privileges: {
miniCircle: [
"SHOW_ALGO",
"ALGO",
"RESUME_TASK",
"UFE",
"CREATE_PROPERTY",
"FIND",
],
lcc: ["UPDATE"],
},
policies: ["operator"],
});
let resp = await conn.getPolicy("sales");
console.log("Policy", resp.data.name, "includes: "),
console.log("- System privileges: ", resp.data.system_privileges),
console.log("- Graph privileges: ", resp.data.graph_privileges),
console.log("- Property privileges: ", resp.data.property_privileges),
console.log("- Policies: ", resp.data.policies);
Policy sales includes:
- System privileges: [ 'SHOW_GRAPH' ]
- Graph privileges: {
miniCircle: [
'SHOW_ALGO',
'ALGO',
'RESUME_TASK',
'FIND',
'UFE',
'CREATE_PROPERTY'
],
lcc: [ 'UPDATE' ]
}
- Property privileges: {
node: { read: [ [Array] ], write: [], deny: [] },
edge: { read: [ [Array] ], 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.
Renvoie :
Response
: Résultat de la requête.
// Supprime la stratégie 'sales' et affiche le code d'erreur
let resp = await conn.dropPolicy("sales");
console.log(resp.status.code_desc);
SUCCESS
Utilisateur
showUser()
Récupère tous les utilisateurs de base de données de l'instance.
Paramètres :
RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
User[]
: La liste de tous les utilisateurs dans l'instance.
// Récupère tous les utilisateurs et affiche les informations du premier retourné
let resp = await conn.showUser();
let user1 = resp.data[0];
console.log("Username:", user1.username);
console.log("Creation timestamp:", user1.create.valueOf());
console.log("System privileges:", user1.system_privileges);
console.log("Graph privileges:", user1.graph_privileges);
console.log("Property privileges:", user1.property_privileges);
console.log("Policies:", user1.policies);
Username: test006
Creation timestamp: 1693550276
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: {
node: { read: [], write: [], deny: [ [Array] ] },
edge: { read: [], write: [], deny: [ [Array] ] }
}
Policies: [ 'operator' ]
getUser()
Récupère un utilisateur de 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.
Renvoie :
User
: L'utilisateur récupéré.
// Récupère l'utilisateur 'test005' et affiche ses informations
let resp = await conn.getUser("test005");
console.log("Username:", resp.data.username);
console.log("Creation timestamp:", resp.data.create.valueOf());
console.log("System privileges:", resp.data.system_privileges);
console.log("Graph privileges:", resp.data.graph_privileges);
console.log("Property privileges:", resp.data.property_privileges);
console.log("Policies:", resp.data.policies);
Username: test005
Creation timestamp: 1693473359
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: {
node: { read: [], write: [], deny: [] },
edge: { read: [], write: [], deny: [] }
}
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 définis,system_privileges
,graph_privileges
,property_privilege
etpolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Response
: Résultat de la requête.
// Crée un nouvel utilisateur 'NodeJsUser' et affiche le code d'erreur
let resp = await conn.createUser({
username: "NodeJsUser",
password: "Password",
system_privileges: ["SHOW_GRAPH", "TRUNCATE"],
graph_privileges: {
miniCircle: [
"SHOW_ALGO",
"ALGO",
"RESUME_TASK",
"UFE",
"CREATE_PROPERTY",
"FIND",
],
},
property_privileges: {
node: {
read: [],
write: [],
deny: [],
},
edge: {
read: [],
write: [],
deny: [],
},
},
policies: ["manager"],
});
console.log(resp.status.code_desc);
SUCCESS
alterUser()
Modifie le mot de passe, privilèges système, privilèges de graph, privilèges de propriété et stratégies d'un utilisateur de base de données existant dans l'instance par son nom d'utilisateur.
Paramètres :
AlterUser
: L'utilisateur à modifier ; le champusername
doit être défini,password
,systemPrivileges
,graphPrivileges
,propertyPrivilege
etpolicies
sont optionnels.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Response
: Résultat de la requête.
// Modifie l'utilisateur 'NodeJsUser' et affiche le code d'erreur
let resp = await conn.alterUser({
username: "NodeJsUser",
system_privileges: ["SHOW_GRAPH"],
graph_privileges: {
miniCircle: ["FIND"],
},
policies: ["operator"],
});
console.log(resp.status.code_desc);
SUCCESS
dropUser()
Supprime un utilisateur de 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.
Renvoie :
Response
: Résultat de la requête.
// Supprime l'utilisateur 'NodeJsUser' et affiche le code d'erreur
let resp = await conn.dropUser("NodeJsUser");
console.log(resp.status.code_desc);
SUCCESS
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.GraphPrivilege
: Privilèges de graph à accorder ; définit ànull
pour ignorer l'attribution de privilèges de graph.string[]
: Privilèges système à accorder ; définit ànull
pour ignorer l'attribution de privilèges système.string[]
: Stratégies à accorder ; définit ànull
pour ignorer l'attribution de stratégies.PropertyPrivilege
: Privilèges de propriété à accorder ; définit ànull
pour ignorer l'attribution de privilèges de propriété.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Response
: Résultat de la requête.
// Accorde des privilèges et des stratégies à l'utilisateur 'johndoe' et affiche le code d'erreur
let resp = await conn.grantPolicy(
"johndoe",
{
miniCircle: [
"SHOW_ALGO",
"ALGO",
"RESUME_TASK",
"UFE",
"CREATE_PROPERTY",
"FIND",
],
},
null,
["manager"],
null
);
console.log(resp.status.code_desc);
SUCCESS
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.GraphPrivilege
: Privilèges de graph à révoquer ; définit ànull
pour ignorer la révocation de privilèges de graph.string[]
: Privilèges système à révoquer ; définit ànull
pour ignorer la révocation de privilèges système.string[]
: Stratégies à révoquer ; définit ànull
pour ignorer la révocation de stratégies.PropertyPrivilege
: Privilèges de propriété à révoquer ; définit ànull
pour ignorer la révocation de privilèges de propriété.RequestConfig
(Optionnel) : Paramètres de configuration pour la requête.
Renvoie :
Response
: Résultat de la requête.
let resp = await conn.revokePolicy(
"johndoe",
{
miniCircle: ["SHOW_ALGO", "ALGO", "RESUME_TASK"],
},
null,
["manager"],
null
);
console.log(resp.status.code_desc);
SUCCESS
Exemple Complet
import { ConnectionPool, ULTIPA } from "@ultipa-graph/ultipa-node-sdk";
import { GraphExra } from "@ultipa-graph/ultipa-node-sdk/dist/connection/extra/graph.extra";
import { getEdgesPrintInfo } from "@ultipa-graph/ultipa-node-sdk/dist/printers/edge";
import { RequestType } from "@ultipa-graph/ultipa-node-sdk/dist/types";
import { ListFormat } from "typescript";
let sdkUsage = async () => {
// Paramètres de connexion
//Exemple d'URI : hosts="mqj4zouys.us-east-1.cloud.ultipa.com:60010"
let hosts = [
"192.168.1.85:60061",
"192.168.1.86:60061",
"192.168.1.87:60061",
];
let username = "***";
let password = "***";
let connPool = new ConnectionPool(hosts, username, password);
// Établit une connexion à la base de données
let conn = await connPool.getActive();
let isSuccess = await conn.test();
console.log(isSuccess);
// Paramètres de la requête
let requestConfig = <RequestType.RequestConfig>{
useMaster: true,
};
// Récupère toutes les stratégies et affiche leurs informations
let resp = await conn.showPolicy();
for (let i of resp.data) {
console.log("Policy ", i.name, " includes: "),
console.log("- System privileges: ", i.system_privileges),
console.log("- Graph privileges: ", i.graph_privileges),
console.log("- Property privileges: ", i.property_privileges),
console.log("- Policies: ", i.policies);
}
};
sdkUsage().then(console.log).catch(console.log);