Gérez par programmation les resources de métadonnées MaxCompute à l'aide du SDK CatalogAPI pour Java et Python.
Version du produit : v0.2.2 Dépôt SDK :aliyun/aliyun-odps-openapi-sdk
Présentation
Le SDK CatalogAPI est un SDK open source dédié à la gestion du catalogue de données MaxCompute. Il offre un accès programmatique aux resources de métadonnées telles que Project, Schema, Table, Connection, Role, Taxonomy, DataPolicy, DataScan et Model.
Fonctionnalités
Principales capacités :
-
Gestion des tables
Créez et mettez à jour des tables internes et externes. Consultez et supprimez des tables internes, des tables externes, des vues, des vues matérialisées et des tables snapshot.
-
Gestion des connexions
Gérez les configurations de Connection pour accéder à des sources de données externes telles qu'OSS et OTS.
-
Gestion des autorisations
Mettez en œuvre un contrôle d'accès granulaire via Role et Policy.
-
Sécurité des données
Implémentez un contrôle d'accès au niveau des colonnes grâce à Taxonomy et Policy Tag, ainsi qu'un masquage dynamique des données via DataPolicy.
-
Exploration des métadonnées
Découvrez et explorez automatiquement les métadonnées provenant de sources de données externes à l'aide de DataScan.
-
Gestion des modèles
Gérez les métadonnées des modèles d'apprentissage automatique avec prise en charge multiversion.
-
Recherche de resources
Effectuez des recherches sur diverses entités de métadonnées au sein d'un namespace.
Modèle de resource
CatalogAPI suit un style de conception RESTful. La hiérarchie centrale des resources se présente comme suit :
Namespace (primary account UID)
├── Connection # External data source connection
├── Role # Custom role
├── Taxonomy # Policy tag classification
│ └── PolicyTag # Policy tag
├── DataPolicy # Data policy (masking rules)
├── DataScan # Metadata crawling task
│ └── ScanJob # Crawling job
Project # MaxCompute project
└── Schema # Namespace (directory)
├── Table # Data table
│ └── Partition # Partition
└── Model # Machine learning model
L'ID du namespace correspond à l'UID du compte principal Alibaba Cloud.
Démarrage rapide
Installation du SDK
Le SDK CatalogAPI est disponible en Java et en Python, et hébergé sur le dépôt GitHub d'Alibaba Cloud.
// Add dependency in Maven project
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>catalog-api</artifactId>
<version>0.2.2</version>
</dependency>pip install pyodps-catalogInitialisation du client
Initialisez le client CatalogAPI à l'aide d'une paire AccessKey.
Ne codez pas en dur les paires AccessKey dans votre code. Utilisez des variables d'environnement ou des fichiers de configuration pour gérer vos identifiants.
import com.aliyun.odps.catalog.Client;
import com.aliyun.odps.models.Config;
public class CatalogDemo {
public static void main(String[] args) throws Exception {
// Initialize configuration
Config config = new Config();
config.setAccessKeyId(System.getenv("ALIBABACLOUD_ACCESS_KEY_ID"));
config.setAccessKeySecret(System.getenv("ALIBABACLOUD_ACCESS_KEY_SECRET"));
// Set the MaxCompute endpoint. The SDK automatically discovers the CatalogAPI endpoint through the routing API.
// Replace cn-shanghai with your actual region.
config.setOdpsEndpoint("service.cn-shanghai.maxcompute.aliyun.com");
// Create client
Client client = new Client(config);
// Use client to call APIs
}
}import os
from pyodps_catalog.client import Client
from maxcompute_tea_openapi.models import Config
# Initialize configuration
config = Config(
access_key_id=os.environ.get('ALIBABACLOUD_ACCESS_KEY_ID'),
access_key_secret=os.environ.get('ALIBABACLOUD_ACCESS_KEY_SECRET'),
# Method 1 (recommended): Set odps_endpoint. The SDK automatically discovers the CatalogAPI endpoint through the routing API.
odps_endpoint='service.cn-shanghai.maxcompute.aliyun.com'
# Method 2: Directly specify the CatalogAPI endpoint.
# endpoint='catalogapi.cn-shanghai.maxcompute.aliyun.com'
)
# Create client
client = Client(config)
# Use client to call APIsExemple : liste des tables
Cet exemple répertorie toutes les tables d'un schema spécifié :
import com.aliyun.odps.catalog.models.ListTablesResponse;
import com.aliyun.odps.catalog.models.Table;
ListTablesResponse response = client.listTables(
"my_project", // projectId
"default", // schemaName
100, // pageSize
"" // pageToken. Pass empty string for the first call
);
if (response.getTables() != null) {
for (Table table : response.getTables()) {
System.out.println("Table: " + table.getTableName());
}
}
// If more pages exist, use nextPageToken to continue
String nextToken = response.getNextPageToken();response = client.list_tables(
project_id="my_project",
schema_name="default",
page_size=100,
page_token=""
)
if response.tables:
for table in response.tables:
print(f"Table: {table.table_name}")
# If more pages exist, use next_page_token to continue
next_token = response.next_page_tokenAuthentification
Identifiants d'accès
CatalogAPI requiert une paire de clés AccessKey Alibaba Cloud pour l'authentification. Nous vous recommandons d'utiliser une paire de clés AccessKey associée à un utilisateur RAM et de respecter le principe du moindre privilège.
Liste des autorisations
Le tableau ci-dessous répertorie les autorisations requises pour chaque opération API :
Politique et rôle
CatalogAPI prend en charge le contrôle d'accès basé sur les politiques. Une politique se compose d'un ensemble de liaisons (Bindings), où chaque liaison attribue un rôle à un ensemble de membres.
-
Modèle de politique
{ "etag": "string", "bindings": [ { "role": "string", "members": ["string"] } ] }etag : utilisé pour la validation de la cohérence lecture-modification-écriture
-
bindings : liste des liaisons de rôles
role : nom du rôle
members : liste des membres au format user:{userId}
-
Exemple de définition de politique
import com.aliyun.odps.catalog.models.*; // Construct SetPolicyRequest Policy policy = new Policy(); Binding binding = new Binding(); // The role field requires the full resource path format: namespaces/{namespaceId}/roles/{roleName} binding.setRole("namespaces/{namespaceId}/roles/odps.admin"); binding.setMembers(Arrays.asList("user:123456789")); policy.setBindings(Arrays.asList(binding)); policy.setEtag("fetch_with_get_policy"); SetPolicyRequest request = new SetPolicyRequest(); request.setPolicy(policy); // Set table Policy client.setTablePolicy(table, request);
Modèles de données
Champs communs
|
Field |
Type |
Description |
|
name |
string |
Nom complet de la resource REST, unique à l’échelle du domaine. Le SDK utilise ce nom pour construire les URL des requêtes REST. Il s’agit généralement d’un champ en sortie seule. |
Types de données
Outre les types JSON standard, les marqueurs de type de données spéciaux suivants sont utilisés :
|
Data types |
Description |
|
enum |
Type d’énumération sémantique, représenté sous forme de chaîne au format JSON |
|
int64 |
Entier 64 bits, transmis sous forme de chaîne |
Modèle de table
La table est l’une des ressources principales de CatalogAPI.
{
"etag": "string",
"name": "string",
"projectId": "string",
"schemaName": "string",
"tableName": "string",
"type": "enum(TableType)",
"description": "string",
"tableSchema": { "object(TableFieldSchema)" },
"clustering": { "object(Clustering)" },
"tableConstraints": { "object(TableConstraints)" },
"partitionDefinition": { "object(PartitionDefinition)" },
"tableFormatDefinition": { "object(TableFormatDefinition)" },
"externalDataConfiguration": { "object(ExternalDataConfiguration)" },
"maxLakeConfiguration": { "object(MaxLakeConfiguration)" },
"externalCatalogTableOptions": { "object(ExternalCatalogTableOptions)" },
"expirationOptions": { "object(ExpirationOptions)" },
"createTime": "string (int64 format)",
"lastModifiedTime": "string (int64 format)",
"labels": { "map<string, string>" }
}
Modèle TableFieldSchema
Types de données pris en charge (FieldDataType) : TINYINT, SMALLINT, INT, BIGINT, BINARY, FLOAT, DOUBLE, DECIMAL, VARCHAR, CHAR, STRING, DATE, DATETIME, TIMESTAMP, TIMESTAMP_NTZ, BOOLEAN, STRUCT, ARRAY, MAP
{
"fieldName": "string",
"sqlTypeDefinition": "string",
"typeCategory": "enum(FieldDataType)",
"mode": "enum(FieldMode)",
"fields": [{ "object(TableFieldSchema)" }],
"description": "string",
"policyTags": { "object(PolicyTags)" },
"maxLength": "string (int64 format)",
"precision": "string (int64 format)",
"scale": "string (int64 format)",
"defaultValueExpression": "string"
}
Modèle de connexion
La connexion sert à configurer les informations d'accès aux sources de données externes, telles qu'OSS et OTS.
{
"name": "string",
"connectionName": "string",
"description": "string",
"creationTime": "string (int64 format)",
"lastModifiedTime": "string (int64 format)",
"connectionType": "enum(ConnectionType)",
"cloudResource": { "object(CloudResourceOptions)" },
"region": "string"
}
Modèle de rôle
Le rôle sert à définir des rôles personnalisés.
{
"name": "string",
"roleName": "string",
"description": "string",
"includedPermissions": ["string"],
"etag": "string",
"deleted": false
}
Modèle de taxonomie
La taxonomie sert à gérer le système de classification des balises de stratégie (Policy Tag).
{
"name": "string",
"taxonomyName": "string",
"description": "string",
"activatedPolicyTypes": ["enum(PolicyType)"],
"policyTagCount": 0,
"createTime": "string (int64 format)",
"lastModifiedTime": "string (int64 format)"
}
Modèle PolicyTag
PolicyTag est une balise de stratégie associée à une taxonomie, utilisée pour mettre en œuvre le contrôle d'accès au niveau des colonnes.
{
"name": "string",
"policyTagName": "string",
"description": "string",
"parentPolicyTag": "string",
"childPolicyTags": ["string"]
}
Modèle DataPolicy
Le modèle DataPolicy sert à définir les règles de masquage des données.
{
"name": "string",
"dataPolicyName": "string",
"policyTag": "string",
"dataPolicyType": "enum(DataPolicyType)",
"dataMaskingPolicy": { "object(DataMaskingPolicy)" }
}
Modèle DataScan
Le modèle DataScan permet de configurer les tâches d'exploration des métadonnées.
{
"name": "string",
"scanName": "string",
"type": "string",
"creator": "string",
"customerId": "string",
"namespaceId": "string",
"description": "string",
"scanId": "string",
"creationTime": 0,
"lastModifiedTime": 0,
"lastTriggeredTime": 0,
"lastSuccessfulScheduleTime": 0,
"lastTriggeredBy": "string",
"schedulingStatus": "string",
"source": { "object(DataScanSource)" },
"target": { "object(DataScanTarget)" },
"properties": { "object(DataScanProperties)" },
"schedulerMode": "string",
"schedulerInterval": "string",
"scheduledCount": 0
}
Model
Le modèle sert à gérer les métadonnées des modèles d'apprentissage automatique.
{
"name": "string",
"modelName": "string",
"versionName": "string",
"defaultVersion": "string",
"createTime": "string",
"updateTime": "string",
"versionCreateTime": "string",
"versionUpdateTime": "string",
"description": "string",
"versionDescription": "string",
"expirationDays": 0,
"versionExpirationDays": 0,
"sourceType": "string",
"modelType": "string",
"labels": { "map<string, string>" },
"transform": { "map<string, string>" },
"path": "string",
"options": { "map<string, string>" },
"extraInfo": { "map<string, string>" },
"versionExtraInfo": { "map<string, string>" },
"trainingInfo": { "map<string, string>" },
"inferenceParameters": { "map<string, string>" },
"featureColumns": { "object(ModelFieldSchema)" },
"tasks": ["string"]
}
Schema model
{
"name": "string",
"schemaName": "string",
"description": "string",
"type": "enum(SchemaType)",
"owner": "string",
"externalSchemaConfiguration": { "object(ExternalSchemaConfiguration)" }
}
Project model
{
"name": "string",
"projectId": "string",
"owner": "string",
"description": "string",
"createTime": "string (int64 format)",
"lastModifiedTime": "string (int64 format)",
"schemaEnabled": "boolean",
"region": "string"
}
Partition model
{
"spec": "string"
}
|
Field |
Type |
Description |
|
spec |
string |
Spécification de partition. Exemple de format : bu=tt/ds=20250515 |
Search model
{
"name": "string",
"displayName": "string",
"type": "string",
"aspects": { "map<string, string>" },
"createTime": "string",
"lastModifiedTime": "string",
"description": "string"
}
Référence API
Remarques générales
Préfixe d'URL : Toutes les URL d'API de cette rubrique utilisent le préfixe suivant :/api/catalog/v1alpha/.
Ce préfixe n'est pas répété dans les descriptions individuelles des API.
Gestion des erreurs
|
Code d'état HTTP |
Raison |
Description |
|
400 |
InvalidArgument |
Entrée de requête non valide |
|
403 |
AccessDenied |
Aucune autorisation pour effectuer cette opération |
|
404 |
NotFound |
L'objet sur lequel l'opération doit être effectuée n'existe pas |
|
409 |
AlreadyExists |
L'objet à créer existe déjà |
|
429 |
RateLimitExceeded |
Taux de requêtes trop élevé. Limitation de débit déclenchée |
|
500 |
InternalError |
Erreur interne du serveur |
API Table
Créer une table
Créez une nouvelle table.
-
Signature de la méthode
Table createTable(Table table) -
Paramètres de requête
Paramètre
Type
Obligatoire
Description
table
Table
Oui
Objet Table contenant la définition complète de la table
-
Réponse
Renvoie l'objet Table créé.
-
Exemple d'utilisation
// Construct table Table table = new Table(); table.setProjectId("my_project"); table.setSchemaName("default"); table.setTableName("my_table"); table.setDescription("This is an example table"); table.setType("TABLE"); // Set table schema TableFieldSchema field = new TableFieldSchema(); field.setFieldName("id"); field.setTypeCategory("BIGINT"); field.setMode("REQUIRED"); TableFieldSchema nameField = new TableFieldSchema(); nameField.setFieldName("name"); nameField.setTypeCategory("STRING"); nameField.setMode("NULLABLE"); TableFieldSchema schema = new TableFieldSchema(); schema.setFields(Arrays.asList(field, nameField)); table.setTableSchema(schema); // Create table Table createdTable = client.createTable(table); System.out.println("Created table: " + createdTable.getName());
Obtenir une table
Obtenez des informations détaillées sur une table spécifiée.
-
Signature de la méthode
Table getTable(Table table) -
Paramètres de requête
Paramètre
Type
Obligatoire
Description
table
Table
Oui
Objet Table contenant projectId, schemaName et tableName
-
Réponse
Renvoie un objet Table.
-
Exemple d'utilisation
Table query = new Table(); query.setProjectId("my_project"); query.setSchemaName("default"); query.setTableName("my_table"); Table result = client.getTable(query); System.out.println("Table type: " + result.getType()); System.out.println("Description: " + result.getDescription());
Mettre à jour une table
Mettez à jour les attributs d'une table spécifiée.
-
Signature de la méthode
Table updateTable(Table table) -
Paramètres de requête
Paramètre
Type
Obligatoire
Description
table
Table
Oui
Objet Table contenant les mises à jour
-
Réponse
Renvoie l'objet Table mis à jour.
-
Exemple d'utilisation
Table table = client.getTable(query); table.setDescription("Updated description"); Table updated = client.updateTable(table);
Supprimer une table
Supprimez une table spécifiée.
-
Signature de la méthode
HttpResponse deleteTable(Table table) -
Paramètres de requête
Paramètre
Type
Obligatoire
Description
table
Table
Oui
Objet Table contenant projectId, schemaName et tableName
-
Réponse
Renvoie une HttpResponse vide en cas de succès.
-
Exemple d'utilisation
HttpResponse response = client.deleteTable(table); System.out.println("Status code: " + response.getStatusCode());
Lister les tables
Listez toutes les tables d'un schéma spécifié.
-
Signature de la méthode
ListTablesResponse listTables(String projectId, String schemaName, Integer pageSize, String pageToken) -
Paramètres de requête
Paramètre
Type
Obligatoire
Description
projectId
string
Oui
ID du projet
schemaName
string
Oui
Nom du schéma
pageSize
integer
Non
Taille de la page. La valeur par défaut est 100, le maximum est 1000
pageToken
string
Non
Jeton de pagination. La valeur par défaut est vide
-
Réponse
{ "tables": [Table], "nextPageToken": "string" } -
Exemple d'utilisation
ListTablesResponse response = client.listTables("my_project", "default", 100, ""); // Iterate through all pages while (response.getTables() != null && !response.getTables().isEmpty()) { for (Table t : response.getTables()) { System.out.println(t.getTableName()); } if (response.getNextPageToken() == null || response.getNextPageToken().isEmpty()) { break; } response = client.listTables("my_project", "default", 100, response.getNextPageToken()); }
Définir la politique d'accès d'une table
Définissez la politique d'accès d'une table.
-
Signature de la méthode
Policy setTablePolicy(Table table, SetPolicyRequest request) -
Paramètres de requête
Paramètre
Type
Obligatoire
Description
table
Table
Oui
Objet Table
request
SetPolicyRequest
Oui
Requête de politique
-
Réponse
Renvoie l'objet Policy mis à jour.
Obtenir la politique d'accès d'une table
Obtenez la politique d'accès d'une table.
-
Signature de la méthode
Policy getTablePolicy(Table table) -
Paramètres de requête
Paramètre
Type
Obligatoire
Description
table
Table
Oui
Objet Table
-
Réponse
Renvoie l'objet Policy de la table.
Obtenir le DataToken d'une table
Obtenez un jeton d'accès temporaire pour une table spécifiée.
-
Signature de la méthode
DataToken getDataToken(Table table, Integer duration) -
Paramètres de requête
Paramètre
Type
Obligatoire
Description
table
Table
Oui
Objet Table
duration
integer
Non
Durée de validité du jeton (secondes)
-
Réponse
{ "version": "string", "type": "string", "value": "string", "expiration": "string" } -
Description des champs DataToken
Champ
Type
Description
version
string
Version du format. Actuellement V1
type
string
Type. Seule la valeur STS est actuellement prise en charge
value
string
Contenu du jeton, encodé en base64
expiration
string
Date d'expiration
API Partition
Lister les partitions
Liste toutes les partitions d'une table spécifiée.
-
Signature de la méthode
ListPartitionsResponse listPartitions( String projectId, String schemaName, String tableName, Integer pageSize, String pageToken, String query, String view ) -
Paramètres de la requête
Parameter
Type
Required
Description
projectId
string
Yes
ID du projet
schemaName
string
Yes
Nom du schéma
tableName
string
Yes
Nom de la table
pageSize
integer
No
Taille de la page. La valeur par défaut est 100, le maximum est 1000
pageToken
string
No
Jeton de pagination. La valeur par défaut est vide
query
string
No
Condition de recherche de partition, par exemple partition_name:part
view
string
No
Actuellement, seule la valeur BASIC est prise en charge
-
Réponse
{ "partitions": [Partition], "nextPageToken": "string" }
API Connection
Créer une connexion
Créez une nouvelle connexion à une source de données externe.
-
Signature de la méthode
Connection createConnection(String namespace, Connection connection) -
Paramètres de la requête
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace (UID du compte principal)
connection
Connection
Yes
Objet Connection
-
Réponse
Renvoie l'objet Connection créé.
-
Exemple d'utilisation
// Construct Connection Connection conn = new Connection(); conn.setConnectionName("my_oss_connection"); conn.setDescription("Connection for accessing OSS"); conn.setConnectionType("CLOUD_RESOURCE"); CloudResourceOptions options = new CloudResourceOptions(); options.setRamRoleArn("acs:ram::123456789:role/MaxComputeOSSRole"); conn.setCloudResource(options); // Create connection Connection created = client.createConnection("123456789", conn);
Lister les connexions
Liste toutes les connexions dans un namespace spécifié.
-
Signature de la méthode
ListConnectionsResponse listConnections(String namespace, Integer pageSize, String pageToken) -
Paramètres de la requête
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
pageSize
integer
No
Taille de la page. La valeur par défaut est 100, le maximum est 1000
pageToken
string
No
Jeton de pagination. La valeur par défaut est vide
-
Réponse
{ "connections": [Connection], "nextPageToken": "string" }
Obtenir une connexion
Obtenez des informations détaillées sur une connexion spécifiée.
-
Signature de la méthode
Connection getConnection(String namespace, String connectionName)
Mettre à jour une connexion
Mettez à jour les attributs d'une connexion spécifiée.
-
Signature de la méthode
Connection updateConnection(String namespace, String connectionName, Connection connection, String updateMask) -
Paramètres de la requête
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
connectionName
string
Yes
Nom de la connexion
connection
Connection
Yes
Objet Connection contenant les mises à jour
updateMask
string
Yes
Spécifiez les champs à mettre à jour. Actuellement, seul le champ description est pris en charge
-
Réponse
Renvoie l'objet Connection mis à jour.
-
Exemple d'utilisation
Connection conn = new Connection(); conn.setConnectionName("my_oss_connection"); conn.setDescription("Updated description"); Connection updated = client.updateConnection("123456789", "my_oss_connection", conn, "description");
Supprimer une connexion
Supprimez une connexion spécifiée.
-
Signature de la méthode
HttpResponse deleteConnection(String namespace, String connectionName)
Définir la politique de connexion
Définissez la politique d'accès d'une connexion.
-
Signature de la méthode
Policy setConnectionPolicy(String namespace, String connectionName, SetPolicyRequest request)
Obtenir la politique de connexion
Obtenez la politique d'accès d'une connexion.
-
Signature de la méthode
Policy getConnectionPolicy(String namespace, String connectionName)
API Role
Créer un rôle
Créez un rôle personnalisé.
-
Signature de la méthode
Role createRole(String namespace, Role role) -
Paramètres de la requête
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
role
Role
Yes
Objet Role
-
Réponse
Renvoie l'objet Role créé.
-
Exemple d'utilisation
Role role = new Role(); role.setRoleName("my_custom_role"); role.setDescription("Custom role"); role.setIncludedPermissions(Arrays.asList("odps:CreateTable", "odps:ListTable")); Role created = client.createRole("123456789", role);
Lister les rôles
Liste tous les rôles dans un namespace spécifié.
-
Signature de la méthode
ListRolesResponse listRoles( String namespace, Integer pageSize, String pageToken, String view, Boolean showDeleted ) -
Paramètres de la requête
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
pageSize
integer
No
Taille de la page. La valeur par défaut est 100, le maximum est 1000
pageToken
string
No
Jeton de pagination. La valeur par défaut est vide
view
enum(RoleView)
No
La valeur par défaut est BASIC. Lorsqu'elle est définie sur FULL, tous les champs sont renvoyés
showDeleted
boolean
No
Indique s'il faut inclure les rôles supprimés. La valeur par défaut est false
-
Réponse
{ "roles": [Role], "nextPageToken": "string" }
Obtenir un rôle
Obtenez des informations détaillées sur un rôle spécifié.
-
Signature de la méthode
Role getRole(String namespace, String roleName) -
Paramètres de la requête
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
roleName
string
Yes
Nom du rôle
Update role
Met à jour les attributs d'un rôle spécifié.
-
Method signature
Role updateRole(String namespace, String roleName, Role role, String updateMask) -
Request parameters
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
roleName
string
Yes
Nom du rôle
role
Role
Yes
Objet Role contenant les mises à jour
updateMask
string
Yes
Spécifiez les champs à mettre à jour, par exemple
"description, includedPermissions"
Delete role
Supprime un rôle personnalisé spécifié.
-
Method signature
HttpResponse deleteRole(String namespace, String roleName)
Après la suppression d'un rôle, les modifications suivantes prennent effet immédiatement :
Le rôle ne peut plus être associé à une Policy.
Les Policies déjà associées à ce rôle restent dans un état lié, mais n'ont aucun effet.
L'opération List roles ne liste pas les rôles supprimés par défaut. Après la suppression d'un rôle, celui-ci compte toujours dans la limite totale et reste dans un état supprimé pendant sept jours. Au bout de sept jours, le rôle est définitivement supprimé, toutes les liaisons de ressources avec ce rôle sont retirées et il ne compte plus dans la limite totale.
Set role Policy
Définit la politique d'accès d'un rôle.
-
Method signature
Policy setRolePolicy(String namespace, String roleName, SetPolicyRequest request)
Get role Policy
Récupère la politique d'accès d'un rôle.
-
Method signature
Policy getRolePolicy(String namespace, String roleName)
Taxonomy API
Create Taxonomy
Crée une nouvelle classification de tags de politique.
-
Method signature
Taxonomy createTaxonomy(String namespace, Taxonomy taxonomy) -
Request parameters
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
taxonomy
Taxonomy
Yes
Objet Taxonomy
-
Response
Renvoie l'objet Taxonomy créé.
-
Usage example
Taxonomy taxonomy = new Taxonomy(); taxonomy.setTaxonomyName("sensitive_data"); taxonomy.setDescription("Sensitive data classification"); taxonomy.setActivatedPolicyTypes(Arrays.asList("FINE_GRAINED_ACCESS_CONTROL")); Taxonomy created = client.createTaxonomy("123456789", taxonomy);
List Taxonomy
Liste toutes les Taxonomies dans un namespace spécifié.
-
Method signature
ListTaxonomiesResponse listTaxonomies(String namespace, Integer pageSize, String pageToken)
Get Taxonomy
Obtient des informations détaillées sur une Taxonomy spécifiée.
-
Method signature
Taxonomy getTaxonomy(String namespace, String taxonomyId)
Update Taxonomy
Met à jour les attributs d'une Taxonomy spécifiée.
-
Method signature
Taxonomy updateTaxonomy(String namespace, String taxonomyId, Taxonomy taxonomy, String updateMask) -
Request parameters
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
taxonomyId
string
Yes
ID de la Taxonomy
taxonomy
Taxonomy
Yes
Objet Taxonomy contenant les mises à jour
updateMask
string
Yes
Spécifiez les champs à mettre à jour, par exemple
"description, activatedPolicyTypes"
Delete Taxonomy
Supprime en cascade tous les tags de politique, les politiques de données configurées et les relations de liaison de colonnes sous la taxonomy.
-
Method signature
HttpResponse deleteTaxonomy(String namespace, String taxonomyId)
Set Taxonomy Policy
Définit la politique d'accès d'une Taxonomy.
-
Method signature
Policy setTaxonomyPolicy(String namespace, String taxonomyId, SetPolicyRequest request)
Get Taxonomy Policy
Récupère la politique d'accès d'une Taxonomy.
-
Method signature
Policy getTaxonomyPolicy(String namespace, String taxonomyId)
PolicyTag API
Create PolicyTag
Crée un nouveau tag de politique sous une Taxonomy spécifiée.
-
Method signature
PolicyTag createPolicyTag(String namespace, String taxonomyId, PolicyTag policyTag) -
Request parameters
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
taxonomyId
string
Yes
ID de la Taxonomy
policyTag
PolicyTag
Yes
Objet PolicyTag
-
Response
Renvoie l'objet PolicyTag créé.
-
Usage example
PolicyTag tag = new PolicyTag(); tag.setPolicyTagName("phone_number"); tag.setDescription("Phone number masking tag"); PolicyTag created = client.createPolicyTag("123456789", "taxonomy_id_123", tag);
List PolicyTag
Liste tous les PolicyTags sous une Taxonomy spécifiée.
-
Method signature
ListPolicyTagsResponse listPolicyTags( String namespace, String taxonomyId, Integer pageSize, String pageToken )
Get PolicyTag
Obtient des informations détaillées sur un PolicyTag spécifié.
-
Method signature
PolicyTag getPolicyTag(String namespace, String taxonomyId, String policyTagId)
Update PolicyTag
Met à jour les attributs d'un PolicyTag spécifié.
-
Method signature
PolicyTag updatePolicyTag( String namespace, String taxonomyId, String policyTagId, PolicyTag policyTag, String updateMask ) -
Request parameters
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
taxonomyId
string
Yes
ID de la Taxonomy
policyTagId
string
Yes
ID du PolicyTag
policyTag
PolicyTag
Yes
Objet PolicyTag contenant les mises à jour
updateMask
string
Yes
Spécifiez les champs à mettre à jour. Actuellement, seul le champ description est pris en charge
Delete PolicyTag
Supprime un tag de politique et supprime de manière récursive : tous les nœuds enfants du tag de politique, toutes les politiques de données configurées sur le tag de politique (y compris les nœuds enfants) et les relations de liaison de colonnes du tag de politique sur les tables (y compris les nœuds enfants).
-
Method signature
HttpResponse deletePolicyTag(String namespace, String taxonomyId, String policyTagId)
Set PolicyTag Policy
Définit la politique d'accès d'un PolicyTag.
-
Method signature
Policy setPolicyTagPolicy(String namespace, String taxonomyId, String policyTagId, SetPolicyRequest request)
Obtenir la politique PolicyTag
Récupérez la politique d'accès d'un PolicyTag.
-
Signature de la méthode
Policy getPolicyTagPolicy(String namespace, String taxonomyId, String policyTagId)
API DataPolicy
Créer une DataPolicy
Créez une nouvelle politique de données (règle de masquage).
-
Signature de la méthode
DataPolicy createDataPolicy(String namespace, DataPolicy dataPolicy) -
Paramètres de la requête
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
dataPolicy
DataPolicy
Yes
Objet DataPolicy
-
Réponse
Renvoie l'objet DataPolicy créé.
-
Exemple d'utilisation
// Construct masking rule DataMaskingPolicy maskingPolicy = new DataMaskingPolicy(); maskingPolicy.setPredefinedExpression("STRING_MASKED_BA"); DataPolicy policy = new DataPolicy(); policy.setDataPolicyName("phone_masking"); policy.setPolicyTag("namespaces/123456789/taxonomies/tid_123/policyTags/ptid_456"); policy.setDataPolicyType("DATA_MASKING_POLICY"); policy.setDataMaskingPolicy(maskingPolicy); DataPolicy created = client.createDataPolicy("123456789", policy);
Lister les DataPolicies
Listez toutes les DataPolicies d'un namespace spécifié.
-
Signature de la méthode
ListDataPoliciesResponse listDataPolicies(String namespace, Integer pageSize, String pageToken)
Obtenir une DataPolicy
Récupérez les informations détaillées d'une DataPolicy spécifiée.
-
Signature de la méthode
DataPolicy getDataPolicy(String namespace, String dataPolicyName)
Supprimer une DataPolicy
Supprimez une DataPolicy spécifiée.
-
Signature de la méthode
HttpResponse deleteDataPolicy(String namespace, String dataPolicyName)
Définir la politique DataPolicy
Définissez la politique d'accès d'une DataPolicy.
-
Signature de la méthode
Policy setDataPolicyPolicy(String namespace, String dataPolicyName, SetPolicyRequest request)
Obtenir la politique DataPolicy
Récupérez la politique d'accès d'une DataPolicy.
-
Signature de la méthode
Policy getDataPolicyPolicy(String namespace, String dataPolicyName)
API DataScan
Créer un DataScan
Créez une nouvelle tâche d'exploration des métadonnées.
-
Signature de la méthode
DataScan createDataScan(String namespace, DataScan dataScan) -
Paramètres de la requête
Parameter
Type
Required
Description
namespace
string
Yes
ID du namespace
dataScan
DataScan
Yes
Objet DataScan
-
Réponse
Renvoie l'objet DataScan créé.
-
Exemple d'utilisation
// Construct crawling task DataScanSource source = new DataScanSource(); source.setLocation("oss://my-bucket/my-path/"); source.setConnection("my_oss_connection"); DataScanTarget target = new DataScanTarget(); target.setProject("my_project"); target.setSchema("default"); target.setNamePrefix("auto_"); DataScanProperties properties = new DataScanProperties(); properties.setFormatFilter("AUTO"); properties.setScanMode("SAMPLE"); properties.setAutoCommit(true); DataScan dataScan = new DataScan(); dataScan.setScanName("my_oss_scan"); dataScan.setType("TABLE_DISCOVERY"); dataScan.setDescription("Crawl OSS metadata"); dataScan.setSource(source); dataScan.setTarget(target); dataScan.setProperties(properties); dataScan.setSchedulerMode("MANUAL"); DataScan created = client.createDataScan("123456789", dataScan);
Lister les DataScans
Listez tous les DataScans d'un namespace spécifié.
-
Signature de la méthode
ListDataScansResponse listDataScans(String namespace, Integer pageSize, String pageToken)
Obtenir un DataScan
Récupérez les informations détaillées d'un DataScan spécifié.
-
Signature de la méthode
DataScan getDataScan(String namespace, String dataScanName)
Mettre à jour un DataScan
Mettez à jour les attributs d'un DataScan spécifié.
-
Signature de la méthode
DataScan updateDataScan(String namespace, DataScan dataScan, String updateMask)
Supprimer un DataScan
Supprimez un DataScan spécifié.
-
Signature de la méthode
HttpResponse deleteDataScan(String namespace, String dataScanName)
Déclencher un DataScan
Déclenchez manuellement une tâche d'exploration DataScan.
-
Signature de la méthode
HttpResponse triggerDataScan(String namespace, String dataScanName) -
Exemple d'utilisation
HttpResponse response = client.triggerDataScan("123456789", "my_oss_scan"); System.out.println("Triggered: " + response.getStatusCode());
Lister les jobs DataScan
Listez l'historique des jobs d'exploration d'un DataScan spécifié.
-
Signature de la méthode
ListDataScanJobsResponse listDataScanJobs( String namespace, String dataScanName, Integer pageSize, String pageToken ) -
Réponse
{ "scanJobs": [ScanJob], "nextPageToken": "string" } -
Modèle ScanJob
Field
Type
Description
jobId
string
ID du job
namespaceId
string
Namespace auquel appartient le job
dataScanId
string
ID dataScan généré par le système
dataScanName
string
Nom de la tâche d'exploration parente
triggeredBy
string
Personne ayant déclenché ce job d'exploration. scheduler pour les déclenchements planifiés
startTime
int64
Heure de début du job d'exploration, horodatage UTC
endTime
int64
Heure de fin du job d'exploration, horodatage UTC
status
string
Statut du job d'exploration : Created/Running/Terminated/Failed
statusDetail
string
Détails du statut du job d'exploration, tels que les messages d'erreur
ddl
string
Informations DDL renvoyées par le job d'exploration qui doivent être validées
stats
string
Informations statistiques renvoyées par le job d'exploration au format JSON
API Model
Créer un modèle
Créez un nouveau modèle d'apprentissage automatique.
-
Signature de la méthode
Model createModel(String projectId, String schemaName, Model model) -
Paramètres de la requête
Parameter
Type
Required
Description
projectId
string
Yes
ID du projet
schemaName
string
Yes
Nom du schéma
model
Model
Yes
Objet Model
-
Réponse
Renvoie l'objet Model créé.
-
Exemple d'utilisation
Model model = new Model(); model.setModelName("my_llm_model"); model.setVersionName("v1"); model.setDefaultVersion("v1"); model.setDescription("My large language model"); model.setSourceType("IMPORT"); model.setModelType("LLM"); model.setPath("oss://my-bucket/models/my_llm/"); model.setTasks(Arrays.asList("text-generation", "chat")); Model created = client.createModel("my_project", "default", model);
Lister les modèles
Listez tous les modèles d'un schéma spécifié.
-
Signature de la méthode
ListModelsResponse listModels( String projectId, String schemaName, Integer pageSize, String pageToken )
Obtenir un modèle
Récupérez les informations détaillées concernant un modèle spécifié.
-
Signature de la méthode
Model getModel(String projectId, String schemaName, String modelName, String versionName) -
Paramètres de requête
Parameter
Type
Required
Description
projectId
string
Yes
ID du projet
schemaName
string
Yes
Nom du schéma
modelName
string
Yes
Nom du modèle
versionName
string
No
Nom de la version. Si ce paramètre n'est pas spécifié, les métadonnées du modèle (sans version) sont interrogées.
Mettre à jour un modèle
Mettez à jour les attributs d'un modèle spécifié.
-
Signature de la méthode
Model updateModel( String projectId, String schemaName, String modelName, Model model, String updateMask, String versionName )
Supprimer un modèle
Supprimez un modèle spécifié (y compris toutes ses versions).
-
Signature de la méthode
HttpResponse deleteModel(String projectId, String schemaName, String modelName)
Créer une version de modèle
Créez une nouvelle version pour un modèle spécifié.
-
Signature de la méthode
Model createModelVersion(String projectId, String schemaName, String modelName, Model model) -
Exemple d'utilisation
Model version = new Model(); version.setModelName("my_llm_model"); version.setVersionName("v2"); version.setVersionDescription("Updated model version"); version.setPath("oss://my-bucket/models/my_llm_v2/"); version.setTasks(Arrays.asList("text-generation", "chat")); Model createdVersion = client.createModelVersion("my_project", "default", "my_llm_model", version);
Supprimer une version de modèle
Supprimez une version de modèle spécifiée.
-
Signature de la méthode
HttpResponse deleteModelVersion( String projectId, String schemaName, String modelName, String versionName )
Lister les versions de modèle
Listez toutes les versions d'un modèle spécifié.
-
Signature de la méthode
ListModelVersionsResponse listModelVersions( String projectId, String schemaName, String modelName, Integer pageSize, String pageToken )
Définir la politique d'un modèle
Définissez la politique d'accès d'un modèle.
-
Signature de la méthode
Policy setModelPolicy(String projectId, String schemaName, String modelName, SetPolicyRequest request)
Obtenir la politique d'un modèle
Récupérez la politique d'accès d'un modèle.
-
Signature de la méthode
Policy getModelPolicy(String projectId, String schemaName, String modelName)
API Project
Obtenir un projet
Récupérez les informations détaillées concernant un projet spécifié.
-
Signature de la méthode
Project getProject(String projectId) -
Exemple d'utilisation
Project project = client.getProject("my_project"); System.out.println("Project owner: " + project.getOwner()); System.out.println("Schema enabled: " + project.getSchemaEnabled()); System.out.println("Region: " + project.getRegion());
API Schema
Créer un schéma
Créez un nouveau schéma dans un projet spécifié.
-
Signature de la méthode
Schema createSchema(String projectId, Schema schema) -
Paramètres de requête
Parameter
Type
Required
Description
projectId
string
Yes
ID du projet
schema
Schema
Yes
Objet Schema
-
Réponse
Renvoie l'objet Schema créé.
-
Exemple d'utilisation
Schema schema = new Schema(); schema.setSchemaName("my_schema"); schema.setDescription("My custom schema"); Schema created = client.createSchema("my_project", schema);
Lister les schémas
Listez tous les schémas d'un projet spécifié.
-
Signature de la méthode
ListSchemasResponse listSchemas(String projectId, Integer pageSize, String pageToken)
Obtenir un schéma
Récupérez les informations détaillées concernant un schéma spécifié.
-
Signature de la méthode
Schema getSchema(String projectId, String schemaName)
Mettre à jour un schéma
Mettez à jour les attributs d'un schéma spécifié.
-
Signature de la méthode
Schema updateSchema(String projectId, String schemaName, String updateMask, Schema schema) -
Paramètres de requête
Parameter
Type
Required
Description
projectId
string
Yes
ID du projet
schemaName
string
Yes
Nom du schéma
updateMask
string
Yes
Spécifiez les champs à mettre à jour. Actuellement, seuls les champs description et owner sont pris en charge, et un seul champ peut être mis à jour à la fois.
schema
Schema
Yes
Objet Schema contenant les mises à jour
Supprimer un schéma
Supprimez un schéma spécifié.
-
Signature de la méthode
HttpResponse deleteSchema(String projectId, String schemaName)
Définir la politique d'un schéma
Définissez la politique d'accès d'un schéma.
-
Signature de la méthode
Policy setSchemaPolicy(String projectId, String schemaName, SetPolicyRequest request)
Obtenir la politique d'un schéma
Récupérez la politique d'accès d'un schéma.
-
Signature de la méthode
Policy getSchemaPolicy(String projectId, String schemaName)
API de recherche
Recherche d'entités
Recherchez diverses entités au sein d'un namespace spécifié.
-
Signature de la méthode
SearchResponse search( String namespaceId, String query, Integer pageSize, String pageToken, String orderBy ) -
Paramètres de requête
Parameter
Type
Required
Description
namespaceId
string
Yes
ID du compte principal. La recherche est effectuée dans le périmètre de ce compte principal.
query
string
Yes
Chaîne de requête composée d'une ou plusieurs conditions de recherche séparées par des virgules.
pageSize
integer
No
Nombre de résultats par page. Doit être > 0, maximum 100.
pageToken
string
No
Jeton de pagination.
orderBy
string
No
Ordre de tri des résultats.
-
Syntaxe de requête
-
Liste des conditions de requête :
Query condition
Description
name:foo
Fait correspondre « foo » en tant que sous-chaîne avec le nom de l'entité.
description:bar
Fait correspondre « bar » en tant que sous-chaîne avec la description de l'entité.
type=TABLE
Obligatoire. Fait correspondre les entités d'un type spécifique. Prend actuellement en charge TABLE, RESOURCE et SCHEMA.
project=proj
Recherche les entités uniquement dans un projet spécifié. L'appelant doit disposer de l'autorisation SearchProject pour le projet.
project=(proj1
proj2
proj3)
Recherche les entités dans plusieurs projets (jusqu'à 512). L'appelant doit disposer de l'autorisation SearchProject pour tous les projets spécifiés.
region=region_id
Recherche les entités dans les projets d'une région spécifiée.
Les conditions
project=projetproject=(proj1|proj2|proj3)ne peuvent pas être utilisées simultanément.La condition
region=region_idne peut pas être utilisée conjointement avec la condition de requête project.
-
-
Ordre de tri (orderBy)
Valid values
Description
default
Ordre de stockage interne (par défaut).
create_time asc
Date de création croissante.
create_time desc
Date de création décroissante.
last_modified_time asc
Dernière date de modification croissante.
last_modified_time desc
Dernière date de modification décroissante.
-
Réponse
{ "entries": [SearchResultEntry], "nextPageToken": "string" } -
Exemple d'utilisation
// Search all tables in a specified project SearchResponse response = client.search( "123456789", // namespaceId "type=TABLE,project=my_project", // query 50, // pageSize "", // pageToken "last_modified_time desc" // orderBy ); if (response.getEntries() != null) { for (SearchResultEntry entry : response.getEntries()) { System.out.println("Name: " + entry.getDisplayName()); System.out.println("Type: " + entry.getType()); System.out.println("Path: " + entry.getName()); } }
Limites d'utilisation
Limites de débit
Les limites de débit sont appliquées au niveau du compte principal. Chaque méthode possède sa propre limite de débit, qui varie selon la catégorie de requête.
|
Limit |
Value |
|
Méthodes Get et GetPolicy |
1 500 requêtes / 15 secondes |
|
Méthodes List, Create, Update, Delete et SetPolicy |
150 requêtes / 15 secondes |
|
GetProject, ListTables, ListPartitions view=StorageDetail/FULL |
15 requêtes / 15 secondes |
Limites de capacité
|
Limit |
Value |
|
Nombre de rôles personnalisés par compte principal |
300 |
|
Nombre d'autorisations par rôle |
3 000 |
|
Nombre de mandataires par politique Allow |
1 500 |
|
Taille totale d'un seul rôle personnalisé (y compris la description, roleName, etc.) |
64 Ko |
Limites des tags de politique
|
Limit |
Value |
|
Nombre de tags de politique liés à une seule colonne dans une seule table |
1 |
|
Nombre de taxonomies par compte |
40 |
|
Nombre de tags de politique par taxonomie |
100 |
|
Profondeur de l'arborescence des tags de politique |
5 |
|
Nombre de politiques de données par tag |
8 |
Limites de pagination
|
Parameter |
Default value |
Maximum value |
|
pageSize |
100 |
1 000 (100 pour certaines API) |
Conventions de dénomination
Conventions de dénomination des connexions
|
Field |
Convention |
|
connectionName |
Unique au sein du namespace. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 32] octets. |
Conventions de dénomination des rôles
|
Field |
Convention |
|
roleName |
Unique au sein du namespace. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets. |
Conventions de dénomination des taxonomies
|
Field |
Convention |
|
taxonomyName |
Unique au sein du namespace. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets. |
Conventions de dénomination des PolicyTag
|
Field |
Convention |
|
policyTagName |
Unique au sein de la taxonomie parente. Sensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets. |
Conventions de dénomination des DataPolicy
|
Field |
Convention |
|
dataPolicyName |
Unique au niveau du compte. |
Conventions de dénomination des modèles
|
Field |
Convention |
|
modelName |
Unique au sein du schéma parent. Insensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets. |
|
versionName |
Unique au sein du même modèle. Insensible à la casse. Caractères valides : [a-z][A-Z][0-9]_. Plage de longueur : [3, 255] octets. |
FAQ
Qu'est-ce qu'un ID de namespace ?
L'ID de namespace correspond à l'UID du compte principal Alibaba Cloud. Lors de l'appel aux API au niveau du namespace, telles que Connection, Role, Taxonomy, DataPolicy et DataScan, l'UID du compte principal doit être transmis en tant que paramètre namespace.
Qu'est-ce que le modèle à trois niveaux ?
MaxCompute prend en charge deux méthodes d'organisation des métadonnées :
Modèle à deux niveaux : Project → Table (méthode traditionnelle)
Modèle à trois niveaux : Project → Schema → Table (nouvelle méthode)
Utilisez le champ Project.schemaEnabled pour déterminer si le modèle à trois niveaux est activé pour un projet. Si le modèle à trois niveaux est activé, le paramètre schemaName doit être spécifié lors de l'appel aux API Table.
Comment mettre en œuvre le contrôle d'accès au niveau des colonnes à l'aide de Policy Tag ?
Flux de travail complet pour le contrôle d'accès au niveau des colonnes :
Créez une taxonomie avec activatedPolicyTypes défini sur FINE_GRAINED_ACCESS_CONTROL.
Créez des PolicyTags sous la taxonomie (prend en charge une structure hiérarchique arborescente).
Lievez un PolicyTag à une colonne spécifiée dans le schéma de colonne de la table.
Créez une DataPolicy pour le PolicyTag (définissez des règles de masquage, facultatif).
Utilisez une politique pour contrôler quels utilisateurs peuvent accéder aux colonnes liées à un PolicyTag.
Comment consulter les résultats d'exploration de DataScan ?
Après l'exécution d'une tâche d'exploration DataScan, un ScanJob est généré. L'historique des tâches peut être consulté via l'API listDataScanJobs. Chaque ScanJob contient :
status : statut de la tâche (Created/Running/Terminated/Failed)
ddl : informations DDL renvoyées par l'exploration qui doivent être validées
stats : informations statistiques renvoyées par l'exploration (format JSON)
Les tags de politique sont-ils restaurés lors de la restauration de tables supprimées avec la commande RESTORE ?
Non. Les tags de politique appliqués à la table avant sa suppression ne sont pas restaurés avec la table. Après la restauration, les tags de politique doivent être réappliqués aux colonnes de la table.
Comment gérer la pagination ?
La plupart des API List renvoient un champ nextPageToken. Si ce champ n'est pas vide, d'autres pages sont disponibles. Transmettez le nextPageToken en tant que paramètre pageToken dans la requête suivante pour récupérer la page de données suivante.
Annexe
Historique des versions du SDK
|
Version |
Date de publication |
Description |
|
v0.2.2 |
— |
Version actuelle |
Glossaire
|
Terme |
Description |
|
Namespace |
Espace de noms, correspondant à l'UID du compte principal Alibaba Cloud |
|
Project |
Projet MaxCompute |
|
Schema |
Espace de noms (répertoire) pour le modèle à trois niveaux |
|
Table |
Table de données |
|
Connection |
Connexion à une source de données externe |
|
Role |
Rôle personnalisé |
|
Taxonomy |
Système de classification des tags de politique |
|
PolicyTag |
Tag de politique pour la mise en œuvre du contrôle d'accès au niveau des colonnes |
|
DataPolicy |
Politique de données pour la définition des règles de masquage des données |
|
DataScan |
Tâche d'exploration des métadonnées |
|
Model |
Métadonnées du modèle d'apprentissage automatique |
|
Policy |
Politique d'accès, constituée d'un ensemble de Bindings |
|
Binding |
Associer un rôle à un ensemble de membres |