Creare un gruppo di privilegi
Per semplificare il processo di concessione dei privilegi, si consiglia di combinare più privilegi in un gruppo di privilegi.
Gruppo di privilegi vs. privilegi
Un gruppo di privilegi è costituito da più privilegi.
Gruppo di privilegi illustrato
Come mostrato nella figura precedente, si supponga di dover concedere tre diversi privilegi a un ruolo.
Se non si utilizza un gruppo di privilegi, è necessario concedere i privilegi tre volte.
Se si utilizza un gruppo di privilegi, è sufficiente creare un gruppo di privilegi e aggiungere i tre privilegi a questo gruppo di privilegi e concedere il gruppo di privilegi al ruolo A.
Utilizzando un gruppo di privilegi, è possibile concedere più privilegi in blocco a un ruolo.
Gruppi di privilegi integrati
Per facilitare l'uso, Milvus fornisce un totale di 9 privilegi incorporati a livello di raccolta, database e istanza: COLL_RO, COLL_RW, COLL_ADMIN, DB_RO, DB_RW, DB_Admin, Cluster_RO, Cluster_RW e Cluster_Admin.
I tre livelli di gruppi di privilegi integrati non hanno una relazione a cascata. L'impostazione di un gruppo di privilegi a livello di istanza non imposta automaticamente le autorizzazioni per tutti i database e le raccolte sotto quell'istanza. I privilegi a livello di database e di raccolta devono essere impostati manualmente.
Le tabelle seguenti illustrano i privilegi inclusi in ciascun gruppo di privilegi incorporato.
Livello di raccolta
COLL_RO: include i privilegi di lettura dei dati della raccolta.
COLL_RW: include i privilegi di lettura e scrittura dei dati della raccolta.
COLL_ADMIN: include i privilegi di lettura e scrittura dei dati della raccolta e di gestione delle raccolte.
La tabella seguente elenca i privilegi specifici inclusi nei tre gruppi di privilegi integrati a livello di raccolta.
**Privilegio** | **CollectionReadOnly** | **CollectionReadWrite** | **CollectionAdmin** |
---|---|---|---|
Interrogazione | ✔️ | ✔️ | ✔️ |
Ricerca | ✔️ | ✔️ | ✔️ |
IndiceDettaglio | ✔️ | ✔️ | ✔️ |
GetFlushState | ✔️ | ✔️ | ✔️ |
Ottieni lo stato di caricamento | ✔️ | ✔️ | ✔️ |
Ottenere l'avanzamento del caricamento | ✔️ | ✔️ | ✔️ |
HasPartition | ✔️ | ✔️ | ✔️ |
MostraPartizioni | ✔️ | ✔️ | ✔️ |
ElencoAlias | ✔️ | ✔️ | ✔️ |
DescriviCollezione | ✔️ | ✔️ | ✔️ |
DescrivereAlias | ✔️ | ✔️ | ✔️ |
OttieniStatistiche | ✔️ | ✔️ | ✔️ |
CreaIndice | ❌ | ✔️ | ✔️ |
Rilasciare l'indice | ❌ | ✔️ | ✔️ |
CreaPartizione | ❌ | ✔️ | ✔️ |
AbbandonaPartizione | ❌ | ✔️ | ✔️ |
Carico | ❌ | ✔️ | ✔️ |
Rilascio | ❌ | ✔️ | ✔️ |
Inserire | ❌ | ✔️ | ✔️ |
Cancellare | ❌ | ✔️ | ✔️ |
Inserisci | ❌ | ✔️ | ✔️ |
Importazione | ❌ | ✔️ | ✔️ |
Sciacquare | ❌ | ✔️ | ✔️ |
Compattazione | ❌ | ✔️ | ✔️ |
Bilanciamento del carico | ❌ | ✔️ | ✔️ |
CreaAlias | ❌ | ❌ | ✔️ |
EliminaAlias | ❌ | ❌ | ✔️ |
Livello del database
DB_RO: include i privilegi di lettura dei dati del database
DB_RW: include i privilegi di lettura e scrittura dei dati del database
DB_Admin: include i privilegi di lettura e scrittura dei dati del database e di gestione dei database.
La tabella seguente elenca i privilegi specifici inclusi nei tre gruppi di privilegi integrati a livello di database.
**Privilegio** | **Lettura del database** | **LetturaDatabaseScrittura** | **Admin del database** |
---|---|---|---|
Mostra collezioni | ✔️ | ✔️ | ✔️ |
DescriviDatabase | ✔️ | ✔️ | ✔️ |
CreaCollezione | ❌ | ❌ | ✔️ |
AbbandonaCollezione | ❌ | ❌ | ✔️ |
Alterare il database | ❌ | ✔️ | ✔️ |
Livello del cluster
Cluster_RO: include i privilegi di lettura dei dati di istanza
Cluster_RW: include i privilegi di lettura e scrittura dei dati delle istanze
Cluster_Admin: include i privilegi di lettura e scrittura dei dati di istanza e di gestione delle istanze.
La tabella seguente elenca i privilegi specifici inclusi nei tre gruppi di privilegi incorporati a livello di istanza.
**Privilegio** | **ClusterReadOnly** | **ClusterReadWrite** | **ClusterAdmin** |
---|---|---|---|
ElencoDatabase | ✔️ | ✔️ | ✔️ |
RinominaCollezione | ❌ | ❌ | ✔️ |
CreaProprietà | ❌ | ❌ | ✔️ |
AggiornaUtente | ❌ | ❌ | ✔️ |
AbbandonaProprietà | ❌ | ❌ | ✔️ |
SelezionaProprietà | ✔️ | ✔️ | ✔️ |
GestisciProprietà | ❌ | ❌ | ✔️ |
SelezionaUtente | ✔️ | ✔️ | ✔️ |
BackupRBAC | ❌ | ❌ | ✔️ |
RipristinoRBAC | ❌ | ❌ | ✔️ |
CreaGruppoRisorse | ❌ | ❌ | ✔️ |
AbbandonaGruppoRisorse | ❌ | ❌ | ✔️ |
AggiornaGruppiRisorse | ❌ | ✔️ | ✔️ |
DescriviGruppoRisorse | ✔️ | ✔️ | ✔️ |
ElencoGruppiRisorse | ✔️ | ✔️ | ✔️ |
TrasferimentoNodo | ❌ | ✔️ | ✔️ |
TrasferimentoReplica | ❌ | ✔️ | ✔️ |
CreaDatabase | ❌ | ❌ | ✔️ |
AbbandonaDatabase | ❌ | ❌ | ✔️ |
RisciacquareTutti | ❌ | ✔️ | ✔️ |
CreaGruppoPrivilegi | ❌ | ❌ | ✔️ |
Abbandona GruppoPrivilegio | ❌ | ❌ | ✔️ |
ElencoGruppiPrivilegio | ❌ | ❌ | ✔️ |
OperareGruppoPrivilegio | ❌ | ❌ | ✔️ |
Procedure
È possibile creare un gruppo di privilegi e quindi aggiungere privilegi al gruppo di privilegi.
Creare un gruppo di privilegi
L'esempio seguente mostra come creare un gruppo di privilegi denominato privilege_group_1
.
from pymilvus import MilvusClient
client.create_privileg_group(group_name='privilege_group_1')
import io.milvus.v2.service.rbac.request.CreatePrivilegeGroupReq;
client.createPrivilegeGroup(CreatePrivilegeGroupReq.builder()
.groupName("privilege_group_1")
.build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"
client.CreatePrivilegeGroup(context.Background(), "privilege_group_1")
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"privilegeGroupName":"privilege_group_1"
}'
Aggiungere privilegi a un gruppo di privilegi
L'esempio seguente mostra come aggiungere i privilegi PrivilegeBackupRBAC
e PrivilegeRestoreRBAC
al gruppo di privilegi privilege_group_1
appena creato.
from pymilvus import MilvusClient
client.add_privileges_to_group(group_name='privilege_group_1', privileges=['Query', 'Search'])
import io.milvus.v2.service.rbac.request.AddPrivilegesToGroupReq;
client.addPrivilegesToGroup(AddPrivilegesToGroupReq.builder()
.groupName("privilege_group_1")
.privileges(Arrays.asList("Query", "Search"))
.build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"
client.AddPrivilegesToGroup(context.Background(), "privilege_group_1", []string{"Query", "Search"})
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/add_privileges_to_group" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"privilegeGroupName":"privilege_group_1",
"privileges":["Query", "Search"]
}'
Rimuovere privilegi da un gruppo di privilegi
L'esempio seguente mostra come rimuovere il privilegio PrivilegeRestoreRBAC
dal gruppo di privilegi privilege_group_1
.
from pymilvus import MilvusClient
client.remove_privileges_from_group(group_name='privilege_group_1', privileges='Search')
import io.milvus.v2.service.rbac.request.RemovePrivilegesFromGroupReq;
client.removePrivilegesFromGroup(RemovePrivilegesFromGroupReq.builder()
.groupName("privilege_group_1")
.privileges(Collections.singletonList("Search"))
.build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"
client.RemovePrivilegesFromGroup(context.Background(), "privilege_group_1", []string{"Search"})
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/remove_privileges_from_group" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"privilegeGroupName":"privilege_group_1",
"privileges":["Search"]
}'
Elencare i gruppi di privilegi
L'esempio seguente mostra come elencare tutti i gruppi di privilegi esistenti.
from pymilvus import MilvusClient
client.list_privilege_groups()
import io.milvus.v2.service.rbac.PrivilegeGroup;
import io.milvus.v2.service.rbac.request.ListPrivilegeGroupsReq;
import io.milvus.v2.service.rbac.response.ListPrivilegeGroupsResp;
ListPrivilegeGroupsResp resp = client.listPrivilegeGroups(ListPrivilegeGroupsReq.builder()
.build());
List<PrivilegeGroup> groups = resp.getPrivilegeGroups();
import "github.com/milvus-io/milvus-sdk-go/v2/client"
client.ListPrivilegeGroups(context.Background())
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/list" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{}'
Di seguito è riportato un esempio di output.
PrivilegeGroupItem: <privilege_group:privilege_group_1>, <privileges:('Search', 'Query')>
Eliminare un gruppo di privilegi
L'esempio seguente mostra come eliminare il gruppo di privilegi privilege_group_1
.
from pymilvus import MilvusClient
client.drop_privilege_group(group_name='privilege_group_1')
import io.milvus.v2.service.rbac.request.DropPrivilegeGroupReq;
client.dropPrivilegeGroup(DropPrivilegeGroupReq.builder()
.groupName("privilege_group_1")
.build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"
client.DropPrivilegeGroup(context.Background(), "privilege_group_1")
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/privilege_groups/drop" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"privilegeGroupName":"privilege_group_1"
}'