Concessione di privilegi o gruppi di privilegi ai ruoli
Una volta creato un ruolo, è possibile concedere privilegi al ruolo. Questa guida illustra come concedere privilegi o gruppi di privilegi a un ruolo.
Assegnare un privilegio o un gruppo di privilegi a un ruolo
Milvus 2.5 introduce una nuova versione dell'API che semplifica l'operazione di assegnazione. Non è più necessario cercare il tipo di oggetto quando si concede un privilegio a un ruolo. Di seguito sono riportati i parametri e le relative spiegazioni.
nome_ruolo: il nome del ruolo di destinazione a cui devono essere concessi i privilegi o i gruppi di privilegi.
Risorsa: La risorsa di destinazione di un privilegio, che può essere un'istanza specifica, un database o una raccolta. La tabella seguente spiega come specificare la risorsa nel metodo
client.grantV2()
.
Livello | Risorsa | Metodo di concessione | Note |
---|---|---|---|
Raccolta | Una collezione specifica | client.grant_privilege_v2(role_name="roleA", privilege="CollectionAdmin", collection_name="col1", db_name="db1") | Immettere il nome della raccolta di destinazione e il nome del database a cui appartiene la raccolta di destinazione. |
Tutte le raccolte sotto uno specifico database | client.grant_privilege_v2(role_name="roleA", privilege="CollectionAdmin", collection_name="*", db_name="db1") | Immettere il nome del database di destinazione e un carattere jolly | |
**Database** | Un database specifico | client.grant_privilege_v2(role_name="roleA", privilege="DatabaseAdmin", collection_name="*", db_name="db1") | Immettere il nome del database di destinazione e un carattere jolly |
Tutti i database dell'istanza corrente | client.grant_privilege_v2(role_name="roleA", privilege="DatabaseAdmin", collection_name="*", db_name="*") | Inserire | |
**Istanza** | L'istanza corrente | client.grant_privilege_v2(role_name="roleA", privilege="ClusterAdmin", collection_name="*", db_name="*") | Inserire |
Privilegio: Il privilegio specifico o il gruppo di privilegi da concedere a un ruolo. Attualmente, Milvus offre 56 tipi di privilegi che possono essere concessi. La tabella seguente elenca i privilegi di Milvus.
La colonna del tipo nella tabella sottostante è utilizzata per facilitare la ricerca rapida dei privilegi ed è usata solo a scopo di classificazione. Quando si concedono privilegi, non è necessario comprendere i tipi. È sufficiente inserire i privilegi corrispondenti.
**Tipo ** | **Privilegio** | **Descrizione** | **Descrizione dell'API pertinente sul lato client** |
---|---|---|---|
Privilegi del database | ElencoDatabase | Visualizza tutti i database nell'istanza corrente | |
DescriviDatabase | Visualizza i dettagli di un database | [DescribeDatabase](https://milvus.io/docs/manage_databases.md) | |
CreaDatabase | Creare un database | [CreateDatabase](https://milvus.io/docs/manage_databases.md) | |
AbbandonaDatabase | Eliminare un database | ||
Alterare il database | Modifica le proprietà di un database | ||
Privilegi di raccolta | GetFlushState | Controlla lo stato dell'operazione di lavaggio della raccolta | [GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md) |
Ottieni lo stato di caricamento | Controlla lo stato di caricamento di una raccolta | ||
OttieniProgressoCaricamento | Controlla l'avanzamento del caricamento di un insieme | ||
Mostra collezioni | Visualizza tutte le raccolte con privilegi di raccolta | [Mostra collezioni](https://milvus.io/docs/view-collections.md) | |
ListaAliases | Visualizza tutti gli alias di una collezione | ||
DescriviCollezione | Visualizza i dettagli di una collezione | ||
DescrivereAlias | Visualizza i dettagli di un alias | ||
Ottieni statistiche | Ottiene le statistiche di una collezione (ad esempio, il numero di entità in una collezione). | ||
CreaCollezione | Crea una collezione | [CreateCollection](https://milvus.io/docs/create-collection.md) | |
Abbandona la collezione | Gettare una collezione | ||
Caricare | Carica una collezione | [LoadCollection](https://milvus.io/docs/load-and-release.md)/[GetLoadingProgress](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/loading_progress.md)/[GetLoadState](https://milvus.io/api-reference/restful/v2.5.x/v2/Collection%20(v2)/Get%20Load%20State.md) | |
Rilasciare | Rilascia una collezione | [ReleaseCollection](https://milvus.io/docs/load-and-release.md) | |
Risciacquare | Persiste tutte le entità di una collezione in un segmento sigillato. Qualsiasi entità inserita dopo l'operazione di flush sarà memorizzata in un nuovo segmento. | [Flush](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md)/[GetFlushState](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/Collection/flush.md) | |
Compattazione | Attiva manualmente la compattazione | ||
RinominaCollezione | Rinomina una collezione | [RinominaCollezione](https://milvus.io/docs/modify-collection.md) | |
CreaAlias | Crea un alias per una collezione | ||
EliminaAlias | Elimina l'alias di una collezione | ||
ArrossisciTutti | Cancella tutte le raccolte in un database | [FlushAll](https://milvus.io/api-reference/pymilvus/v2.5.x/ORM/utility/flush_all.md) | |
Privilegi della partizione | HaPartizione | Controlla se esiste una partizione | |
Mostra partizioni | Visualizza tutte le partizioni di un insieme | [ShowPartitions](https://milvus.io/docs/manage-partitions.md) | |
Creare una partizione | Crea una partizione | [CreatePartition](https://milvus.io/docs/manage-partitions.md) | |
Abbandona partizione | Eliminare una partizione | [EliminarePartizione](https://milvus.io/docs/manage-partitions.md) | |
Privilegi degli indici | IndiceDettaglio | Visualizza i dettagli di un indice | |
CreaIndice | Crea un indice | [CreateIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating) | |
Rilasciare l'indice | Eliminare un indice | [EliminareIndex](https://milvus.io/docs/index-vector-fields.md?tab=floating) | |
Privilegi di gestione delle risorse | Bilanciamento del carico | Ottenere il bilanciamento del carico | |
CreaGruppoRisorse | Crea un gruppo di risorse | ||
Abbandona il gruppo di risorse | Abbandona un gruppo di risorse | [AbbandonaGruppoRisorse](https://milvus.io/docs/resource_group.md) | |
AggiornaGruppi di risorse | Aggiorna un gruppo di risorse | [UpdateResourceGroups](https://milvus.io/docs/resource_group.md) | |
Descrivere un gruppo di risorse | Visualizza i dettagli di un gruppo di risorse | [DescribeResourceGroup](https://milvus.io/docs/resource_group.md) | |
Elenco dei gruppi di risorse | Visualizza tutti i gruppi di risorse dell'istanza corrente | [ListResourceGroups](https://milvus.io/docs/resource_group.md) | |
TrasferisciNodo | Trasferisce i nodi tra i gruppi di risorse | ||
Trasferimento di repliche | Trasferisce le repliche tra gruppi di risorse | ||
BackupRBAC | Crea un backup di tutte le operazioni relative a RBAC nell'istanza corrente. | BackupRBAC | |
RipristinaRBAC | Ripristina un backup di tutte le operazioni relative a RBAC nell'istanza corrente | RipristinaRBAC | |
Privilegi dell'entità | Interrogazione | Eseguire una query | |
Ricerca | Effettuare una ricerca | ||
Inserire | Inserire entità | ||
Eliminare | Eliminare entità | ||
Inserisci | Inserisce le entità | ||
Importazione | Inserire o importare in massa le entità | ||
Privilegi RBAC | CreaProprietà | Crea un utente o un ruolo | [CreateUser/CreateRole](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d) |
AggiornaUtente | Aggiorna la password di un utente | [AggiornaCredenziale](https://zilliverse.feishu.cn/wiki/CnzkwQBW3i7bE3kVtLzcqQLtn9d) | |
AbbandonaProprietà | Elimina la password di un utente o di un ruolo | [DeleteCredential/DropRole](https://zilliverse.feishu.cn/wiki/OqZnwJHrJilLPukfvp5cSgnmnTh) | |
Selezionare la proprietà | Visualizza tutti gli utenti a cui è stato concesso un ruolo specifico | [SelectRole/SelectGrant](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue) | |
GestisciProprietà | Gestione di un utente o di un ruolo o concessione di un ruolo a un utente | ||
SelezionaUtente | Visualizza tutti i ruoli concessi a un utente | [SelezionaUtente](https://zilliverse.feishu.cn/wiki/ZsNZwn1MkiOtH9kFU35cyRgVnue) | |
CreaGruppoPrivilegi | Crea un gruppo di privilegi | [CreaGruppoPrivilegi](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg) | |
Abbandona gruppo di privilegi | Eliminare un gruppo di privilegi | [AbbandonaGruppoPrivilegio](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg) | |
Elenco dei gruppi di privilegi | Visualizza tutti i gruppi di privilegi nell'istanza corrente | [ListPrivilegeGroups](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg) | |
Operare il gruppo di privilegi | Aggiungere privilegi a un gruppo di privilegi o rimuoverli da esso | [OperatePrivilegeGroup](https://zilliverse.feishu.cn/wiki/FpV8wdWcZiDwnQkBloucYF7wnUg) |
L'esempio seguente mostra come concedere il privilegio PrivilegeSearch
su collection_01
sotto il database predefinito e un gruppo di privilegi chiamato privilege_group_1
al ruolo role_a
.
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
client.grant_privilege_v2(
role_name="role_a",
privilege="Search"
collection_name='collection_01'
db_name='default',
)
client.grant_privilege_v2(
role_name="role_a",
privilege="privilege_group_1"
collection_name='collection_01'
db_name='default',
)
client.grant_privilege_v2(
role_name="role_a",
privilege="ClusterReadOnly"
collection_name='*'
db_name='*',
)
import io.milvus.v2.service.rbac.request.GrantPrivilegeReqV2
client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
.roleName("role_a")
.privilege("Search")
.collectionName("collection_01")
.dbName("default")
.build());
client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
.roleName("role_a")
.privilege("privilege_group_1")
.collectionName("collection_01")
.dbName("default")
.build());
client.grantPrivilegeV2(GrantPrivilegeReqV2.builder()
.roleName("role_a")
.privilege("ClusterReadOnly")
.collectionName("*")
.dbName("*")
.build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"
client.GrantV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))
client.GrantV2(context.Background(), "role_a", "collection_01", "privilege_group_1", entity.WithOperatePrivilegeDatabase("default"))
client.GrantV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
const address = "http://localhost:19530";
const token = "root:Milvus";
const client = new MilvusClient({address, token});
await milvusClient.grantPrivilege({
roleName: 'role_a',
object: 'Collection',
objectName: 'collection_01',
privilegeName: 'Search'
});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"roleName": "role_a",
"privilege": "Search",
"collectionName": "collection_01",
"dbName":"default"
}'
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"roleName": "role_a",
"privilege": "privilege_group_1",
"collectionName": "collection_01",
"dbName":"default"
}'
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/grant_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"roleName": "role_a",
"privilege": "ClusterReadOnly",
"collectionName": "*",
"dbName":"*"
}'
Descrivere un ruolo
L'esempio seguente mostra come visualizzare i privilegi concessi al ruolo role_a utilizzando il metodo describe_role.
from pymilvus import MilvusClient
client.describe_role(role_name="role_a")
import io.milvus.v2.service.rbac.response.DescribeRoleResp;
import io.milvus.v2.service.rbac.request.DescribeRoleReq
DescribeRoleReq describeRoleReq = DescribeRoleReq.builder()
.roleName("role_a")
.build();
DescribeRoleResp resp = client.describeRole(describeRoleReq);
List<DescribeRoleResp.GrantInfo> infos = resp.getGrantInfos();
import "github.com/milvus-io/milvus-sdk-go/v2/client"
client.ListRoles(context.Background())
const { MilvusClient, DataType } = require("@zilliz/milvus2-sdk-node")
await milvusClient.describeRole({roleName: 'role_a'});
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/describe" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"roleName": "role_a"
}'
Di seguito è riportato un esempio di output.
{
"role": "role_a",
"privileges": [
{
"collection_name": "collection_01",
"db_name": "default",
"role_name": "role_a",
"privilege": "Search",
"grantor_name": "root"
},
"privilege_group_1"
]
}
Revocare un privilegio o un gruppo di privilegi a un ruolo
L'esempio seguente mostra come revocare il privilegio PrivilegeSearch
su collection_01
sotto il database predefinito e il gruppo di privilegi privilege_group_1
che sono stati concessi al ruolo role_a
.
from pymilvus import MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
client.revoke_privilege_v2(
role_name="role_a",
privilege="Search"
collection_name='collection_01'
db_name='default',
)
client.revoke_privilege_v2(
role_name="role_a",
privilege="privilege_group_1"
collection_name='collection_01'
db_name='default',
)
client.revoke_privilege_v2(
role_name="role_a",
privilege="ClusterReadOnly"
collection_name='*'
db_name='*',
)
import io.milvus.v2.service.rbac.request.RevokePrivilegeReqV2
client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
.roleName("role_a")
.privilege("Search")
.collectionName("collection_01")
.dbName("default")
.build());
client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
.roleName("role_a")
.privilege("privilege_group_1")
.collectionName("collection_01")
.dbName("default")
.build());
client.revokePrivilegeV2(RevokePrivilegeReqV2.builder()
.roleName("role_a")
.privilege("ClusterReadOnly")
.collectionName("*")
.dbName("*")
.build());
import "github.com/milvus-io/milvus-sdk-go/v2/client"
client.RevokeV2(context.Background(), "role_a", "collection_01", "Search", entity.WithOperatePrivilegeDatabase("default"))
client.RevokeV2(context.Background(), "role_a", "collection_01", "privielge_group_1", entity.WithOperatePrivilegeDatabase("default"))
client.RevokeV2(context.Background(), "role_a", "*", "ClusterReadOnly", entity.WithOperatePrivilegeDatabase("*"))
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"roleName": "role_a",
"privilege": "Search",
"collectionName": "collection_01",
"dbName":"default"
}'
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"roleName": "role_a",
"privilege": "Search",
"collectionName": "collection_01",
"dbName":"default"
}'
curl --request POST \
--url "${CLUSTER_ENDPOINT}/v2/vectordb/roles/revoke_privilege_v2" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Content-Type: application/json" \
-d '{
"roleName": "role_a",
"privilege": "ClusterReadOnly",
"collectionName": "*",
"dbName":"*"
}'