Utilisation des extensions Trust Center¶
Pour intégrer des solutions au Trust Center, les partenaires de sécurité peuvent utiliser le Framework Snowflake Native App pour créer des applications qui fournissent un ou plusieurs paquets de scanners supplémentaires. Ces applications sont appelées extensions Trust Center.
Vous pouvez créer des extensions Trust Center pour adapter les solutions de sécurité, de confidentialité, de gouvernance et de conformité afin de mieux répondre à vos besoins, puis partager les extensions dans votre organisation. Vous pouvez également créer des extensions qui peuvent être utilisées plus largement et les répertorier vers des comptes Snowflake spécifiques ou sur Snowflake Marketplace. Pour plus d’informations, voir Développer une extension Trust Center.
Les utilisateurs peuvent découvrir, installer et gérer des extensions tierces qui contiennent des paquets de scanners. Pour plus d’informations, voir Installation des extensions Trust Center.
Exigences en matière de contrôle d’accès¶
Pour créer et gérer des extensions Trust Center, un utilisateur avec le:ref:rôle ACCOUNTADMIN<label-access_control_overview_roles_system> doit accorder les privilèges suivants à votre rôle :
Rôle d’application SNOWFLAKE.TRUST_CENTER_ADMIN <label-native_apps_app_roles_about>
CREATE APPLICATION PACKAGE
CREATE APPLICATION
Développer une extension Trust Center¶
Vous pouvez développer et déployer une extension Trust Center avec des paquets de scanners. Vous pouvez gérer les versions de votre extension Trust Center en utilisant la Gestion des versions Native App. Les extensions utilisent également le Modèle de privilèges Native App pour accéder à des données ou des métadonnées, telles que des tables dans un compte client ou des vues d’utilisation du compte.
Conditions préalables¶
Avant de développer une extension avec des paquets de scanners, remplissez les conditions préalables suivantes :
Découvrez comment développer une Native App.
Découvrez comment créer et utiliser des Procédures stockées </developer-guide/extensibility> Snowflake.
Créez ou identifiez un compte Snowflake qui peut agir en tant que compte de fournisseur d’extensions. Chaque Native App nécessite un compte fournisseur.
Créer un manifeste de paquet de scanners et des scanners¶
Étape 1 : Création d’un fichier manifeste d’extension¶
Créez un fichier manifeste contenant des informations et des métadonnées sur les différents paquets de scanners et scanners :
Créez un fichier manifeste.
Le fichier manifeste doit remplir les conditions suivantes :
Le nom du fichier manifeste doit être
tc_extension_manifest.yml.Le fichier
tc_extension_manifest.ymldoit exister à la racine de la structure de répertoire sur la zone de préparation nommée où se trouve le fichier Native Appmanifest.yml.
Le fichier manifeste répertorie les propriétés du paquet de scanner et tous les scanners qui sont inclus dans le paquet de scanner.
Utilisez la définition suivante pour le fichier manifeste :
manifest_version: '2.0' scanner_packages: - id: '' name: '' short_description: '' description: '' scanners: - id: '' name: '' short_description: '' description: '' type: 'VULNERABILITY' callback: schema: '' name: '' version: ''
Le fichier manifeste possède les propriétés suivantes :
Propriété
Description
Nombre maximum de caractères
manifest_versionActuellement, seule
2.0est valide.Non applicable
scanner_packages.idIdentificateur unique pour le paquet de scanner, que le fournisseur doit gérer pendant toute la durée de vie du paquet de scanner. Seuls les caractères alphanumériques et de soulignement ASCII sont pris en charge. Toutes les configurations que le client applique à un paquet de scanner sont conservées dans le Trust Center en utilisant cet ID.
25
scanner_packages.nameNom du paquet du scanner.
30
scanner_packages.short_descriptionLa description courte du paquet de scanner.
150
scanner_packages.descriptionLa description du paquet de scanner.
700
scanner_packages.scanners.idIdentificateur unique pour le scanner, que le fournisseur doit gérer pendant toute la durée de vie du scanner. Seuls les caractères alphanumériques et de soulignement ASCII sont pris en charge. Toutes les configurations que les clients appliquent à un scanner sont conservées dans le Trust Center en utilisant cet ID.
25
scanner_packages.scanners.nameLe nom du scanner.
30
scanner_packages.scanners.short_descriptionLa description courte du scanner.
150
scanner_packages.scanners.descriptionLa description longue du scanner.
1500
scanner_packages.scanners.typeLe type du scanner. Actuellement, seul
VULNERABILITYest pris en charge.—
scanner_packages.scanners.callbackLa section de rappel du scanner. Chaque scanner doit avoir une section
callbackqui spécifie sonschema,nameetversion.Non applicable
scanner_packages.scanners.callback.schemaSchéma de la procédure stockée. Le schéma doit exister dans le fichier
setup_script.sql. Pour plus d’informations sur ce fichier, voir Étape 3 : Créer une extension.Non applicable
scanner_packages.scanners.callback.nameNom de la procédure stockée Les exigences suivantes s’appliquent à la procédure stockée :
Actuellement, elle doit être nommée
scan.Le nom de la procédure stockée qui est défini ici doit exister dans le fichier
setup_script.sqlsous le schéma qui est spécifié danscallback.schema.
Non applicable
scanner_packages.scanners.callback.versionLa version de la procédure stockée. Actuellement, seul
1.0est pris en charge.Non applicable
L’exemple suivant montre le contenu d’un fichier manifeste :
manifest_version: '2.0'
scanner_packages:
- id: 'se_extension'
name: 'Security Extension'
short_description: 'Enhances security features and capabilities.'
description: 'This extension provides additional security features and capabilities to the platform.'
scanners:
- id: 'es_check'
name: 'NA event sharing check'
short_description: 'Checks for NA event sharing configurations.'
description: 'This scanner checks for event sharing configurations in the North America region.'
type: 'VULNERABILITY'
callback:
schema: 'security_essentials_na_consumer_es_check'
name: 'scan'
version: '1.0'
- id: 'se_mfa'
name: 'MFA Required for Users'
short_description: 'Ensures that MFA is required for all users.'
description: 'This scanner checks that Multi-Factor Authentication (MFA) is enforced for all users in the system.'
type: 'VULNERABILITY'
callback:
schema: 'security_essentials_mfa_required_for_users_check'
name: 'scan'
version: '1.0'
- id: 'se_client'
name: 'Client Security'
short_description: 'Ensures that client security best practices are followed.'
description: 'This scanner checks that client security best practices are enforced for all clients in the system.'
type: 'VULNERABILITY'
callback:
schema: 'security_essentials_client_security'
name: 'scan'
version: '1.0'
- id: 'cis_1_4'
name: 'Extension CIS 1_4'
short_description: 'Checks for compliance with CIS Benchmark 1.4.'
description: 'This scanner checks for compliance with the CIS Benchmark 1.4, ensuring that security best practices are followed.'
type: 'VULNERABILITY'
callback:
schema: 'security_essentials_cis1_4'
name: 'scan'
version: '1.0'
- id: 'cis_3_1'
name: 'Extension CIS 3_1'
short_description: 'Checks for compliance with CIS Benchmark 3.1.'
description: 'This scanner checks for compliance with the CIS Benchmark 3.1, ensuring that security best practices are followed.'
type: 'VULNERABILITY'
callback:
schema: 'security_essentials_cis3_1'
name: 'scan'
version: '1.0'
Étape 2 : Créer des scanners¶
Créez un schéma versionné et une procédure stockée qui met en œuvre la logique du scanner.
Si le paquet du scanner contient plusieurs scanners, procédez comme suit pour chaque scanner, en utilisant un schéma versionné différent pour chaque scanner :
Créez un schéma versionné pour héberger la logique du scanner.
Le nom du schéma doit être le même que celui du schéma spécifié pour le scanner dans le fichier manifeste d’extension.
Par exemple, l’instruction SQL suivante crée un schéma versionné nommé
security_essentials_mfa_required_for_users:CREATE OR ALTER VERSIONED SCHEMA security_essentials_mfa_required_for_users;
Créez une procédure stockée qui met en œuvre la logique du scanner.
L’exemple suivant crée une procédure stockée nommée
scandans le schémasecurity_essentials_mfa_required_for_users:CREATE OR REPLACE PROCEDURE security_essentials_mfa_required_for_users.scan( run_id VARCHAR) RETURNS TABLE( risk_id VARCHAR, risk_name VARCHAR, total_at_risk_count NUMBER, scanner_type VARCHAR, risk_description VARCHAR, suggested_action VARCHAR, impact VARCHAR, severity VARCHAR, at_risk_entities ARRAY ) LANGUAGE SQL AS $$ -- Scanning logic -- $$;
Vérifiez que la procédure stockée renvoie exactement une ligne pour chaque combinaison ID gravité/risque.
La table renvoyée doit comporter les colonnes suivantes :
Colonne
Type
Description
risk_idVARCHAR
L’identificateur du risque.
risk_nameVARCHAR
Le nom du rôle.
total_at_risk_countNUMBER
Le nombre total d’entités à risque pour un scanner. Pour les scénarios où le scanner ne détecte aucune violation, la valeur est
0. Le nombre maximum d’entités à risque est de 1 000, et la taille maximale combinée de toutes les valeurs d’un tableau est de 128 MB.scanner_typeVARCHAR
Actuellement, seul le type de scanner
VULNERABILITYest pris en charge.risk_descriptionVARCHAR
La description du risque.
suggested_actionVARCHAR
Action de remédiation suggérée.
impactVARCHAR
Conséquences possibles de l’absence de prise en compte du risque.
severityVARCHAR
Le niveau de gravité du risque. Les valeurs possibles sont LOW, MEDIUM, HIGH et CRITICAL.
at_risk_entitiesARRAY des valeurs OBJECT
Les valeurs OBJECT du tableau ont la structure suivante :
[ { "entity_id": <id>, "entity_name": "<name>", "entity_object_type": "<type>", "entity_detail": { ..., -- custom data } }, ... ]
La valeur OBJECT contient les paires clé-valeur suivantes :
entity_id- Un champ facultatif qui correspond à l’ID de l’entité à risque.entity_name- Un champ obligatoire qui correspond au nom de l’entité à risque.entity_object_type- Un champ obligatoire qui correspond au type de l’entité à risque. Par exemple :APPLICATION,TASK, NETWORK_POLICY,SECURITY_INTEGRATION,ROLE,PROCEDURE,QUERY,DRIVER,PARAMETER,TABLE,STAGE,DATA_MASKING_POLICY, ouROW_ACCESS_POLICY.entity_detail- Données personnalisées qui décrivent l’entité.
La taille maximale d’un tableau est de 128 MB.
Pour les scénarios où le scanner ne détecte aucune violation, la valeur est une liste vide.
Étape 3 : Créer une extension¶
Une extension regroupe les paquets de scanners dans une Native App, les rend accessibles au Trust Center et configure les privilèges pour permettre à celui-ci d’invoquer les procédures stockées requises.
Pour créer une extension, procédez comme suit :
Créez un fichier
setup_script.sqlpour l’extension en suivant les instructions de Création d’un script de configuration.Dans le fichier
setup_script.sql, créez un rôle d’application nommétrust_center_integration_role.Accordez ensuite les privilèges requis sur le schéma versionné et la procédure stockée à ce rôle d’application.
L’exemple suivant montre comment créer le rôle d’application
trust_center_integration_role, puis comment accorder les privilèges requis :CREATE APPLICATION ROLE IF NOT EXISTS trust_center_integration_role; GRANT USAGE ON SCHEMA security_essentials_mfa_required_for_users TO APPLICATION ROLE trust_center_integration_role; GRANT USAGE ON PROCEDURE security_essentials_mfa_required_for_users.scan(VARCHAR) TO APPLICATION ROLE trust_center_integration_role;
Les privilèges sont requis pour chaque scanner du paquet.
Créez un fichier
manifest.ymlpour l’extension en suivant les instructions de Créer le fichier manifeste pour une application.L’exemple suivant montre le contenu d’un fichier
manifest.ymlpour une extension Trust Center :manifest_version: 1 artifacts: setup_script: setup_script.sql readme: README.md privileges: - IMPORTED PRIVILEGES ON SNOWFLAKE DB: description: "Required access to SNOWFLAKE.ACCOUNT_USAGE views to scan for vulnerabilities"
Créez un paquet d’application pour l’extension en suivant les instructions de Création d’un paquet d’application.
Enregistrez une version du paquet d’application en suivant les instructions de Enregistrer une version.
Pour confirmer que le paquet d’application comporte des versions enregistrées, vous pouvez exécuter la commande SHOW VERSIONS IN APPLICATION PACKAGE.
Créez une application basée sur une version enregistrée en suivant les instructions de Créer une application à partir d’une version ou d’un correctif.
Pour confirmer que l’objet d’application a été créé, vous pouvez exécuter la commande SHOW APPLICATIONS.
Étape 4 : Accorder des privilèges¶
Après avoir installé l’extension, accordez les privilèges requis en procédant comme suit :
Accordez les privilèges demandés par l’extension en suivant les instructions de la section Gestion des demandes d’accès via Snowsight.
Pour accorder le rôle d’application
trust_center_integration_roledans l’espace de noms de l’extension de l’application SNOWFLAKE, exécutez la commande GRANT APPLICATION ROLE :GRANT APPLICATION ROLE <extension_name>.trust_center_integration_role TO APPLICATION snowflake;
Par exemple, pour accorder le rôle d’application:code:
tc_extension.trust_center_integration_roleà SNOWFLAKE, exécutez la commande suivante :GRANT APPLICATION ROLE tc_extension.trust_center_integration_role TO APPLICATION snowflake;
Étape 5 : Enregistrer l’extension¶
Vous pouvez enregistrer ou annuler l’enregistrement d’une extension en appelant les procédures stockées suivantes :
Pour enregistrer une extension avec le Trust Center, procédez comme suit :
Passez à un rôle auquel le rôle d’application SNOWFLAKETRUST_CENTER_ADMIN a été attribué.
Appelez la procédure stockée SNOWFLAKE.TRUST_CENTER.REGISTER_EXTENSION.
Pour afficher les détails de l’extension, vous pouvez exécuter la commande SHOW APPLICATIONS. L’identificateur du paquet d’application ou de la liste se trouve dans la colonne
source.Par exemple, pour enregistrer une extension nommée
tc_extensionqui a été installée à partir du paquet d’application nommémy_tc_package, appelez la procédure stockée :CALL SNOWFLAKE.TRUST_CENTER.REGISTER_EXTENSION( 'APPLICATION PACKAGE', 'my_tc_package', 'tc_extension');
Vous pouvez afficher des informations sur vos extensions enregistrées en interrogeant les Vue EXTENSIONS.
Note
Pour annuler l’enregistrement d’une extension, appelez la procédure stockée SNOWFLAKE.TRUST_CENTER.DEREGISTER_EXTENSION.
Confirmez que le paquet de scanner fourni par l’extension figure désormais dans la liste des paquets de scanners du Trust Center en suivant les instructions de la section Voir les paquets de scanners disponibles.
Étape 6 : Tester l’extension¶
Après avoir accordé les privilèges et activé le paquet du scanner, testez l’extension et examinez les résultats générés par le scanner en interrogeant la vue SNOWFLAKE.TRUST_CENTER.FINDINGS. Si une exécution de scanner a échoué, vous pouvez vérifier le ERROR_CODE et le ERROR_MESSAGE pour déboguer l’échec du scanner.
Vous pouvez également surveiller les données de télémétrie pour les extensions Trust Center en utilisant les vues dans le schéma DATA_SHARING_USAGE. Par exemple, vous pouvez trouver le nombre d’instances installées de l’extension en interrogeant la vue Vue APPLICATION_STATE, et vous pouvez surveiller l’utilisation d’une extension par le consommateur en interrogeant la vue Vue LISTING_ACCESS_HISTORY.
Installation des extensions Trust Center¶
Vous pouvez découvrir, installer et gérer des extensions tierces qui contiennent des paquets de scanners.
Installer et gérer des paquets de scanners tiers¶
Étape 1 : Découvrir et installer des extensions¶
Vous pouvez découvrir et installer une extension Trust Center qui a été publiée sur Snowflake Marketplace ou partagée en utilisant des listes privées. Les extensions Trust Center peuvent contenir un ou plusieurs paquets de scanners.
Pour découvrir et installer une extension, procédez comme suit :
Passez à un rôle qui a reçu le rôle d’application SNOWFLAKE.TRUST_CENTER_ADMIN.
Pour plus d’informations sur l’attribution de ce rôle, voir Privilèges requis.
Dans le menu de navigation, sélectionnez Governance & security » Trust Center.
Sélectionnez l’onglet Manage scanners.
Pour afficher la liste des extensions disponibles sur votre compte, sélectionnez Extensions.
Sélectionnez l’extension que vous souhaitez installer.
La page Snowflake Marketplace pour l’extension s’ouvre.
Sélectionnez Get pour accéder à la liste.
Facultatif : Pour Application name, saisissez un nom.
Pour installer l’extension, sélectionnez Get.
Lorsque l’installation est terminée, une notification Snowsight apparaît et un e-mail est envoyé à l’adresse e-mail associée à votre compte.
Pour plus d’informations sur l’installation des Native Apps, voir Utiliser et gérer Snowflake Native Apps en tant que consommateur.
Étape 2 : Gérer les nouveaux paquets de scanners¶
Lorsque vous installez une extension, vous pouvez ensuite installer un ou plusieurs paquets de scanners. Pour afficher les paquets de scanners nouvellement installés, procédez comme suit :
Passez à un rôle qui a reçu le rôle d’application SNOWFLAKE.TRUST_CENTER_ADMIN.
Pour plus d’informations sur l’attribution de ce rôle, voir Privilèges requis.
Dans le menu de navigation, sélectionnez Governance & security » Trust Center.
Sélectionnez l’onglet Manage scanners.
Dans la liste des paquets de scanners, les informations suivantes sont affichées pour chaque nouveau paquet de scanners :
NAME - Le nom du nouveau paquet du scanner.
SOURCE - Le nom de l’extension que vous avez installée.
SCANNERS - Le nombre de scanners activés et désactivés dans le paquet de scanners.
STATUS - Le statut du paquet de scanners. Par défaut, les nouveaux paquets de scanners installés sont désactivés.
Pour activer un nouveau paquet de scanners, procédez comme suit :
Dans la liste des paquets de scanners, sélectionnez le paquet de scanner.
Sur la page du paquet du scanner, sélectionnez. Enable package.
Pour accorder les privilèges requis par le nouveau paquet de scanners, sélectionnez Grant.
Sélectionnez Enable.
Répétez ces étapes pour chaque nouveau paquet de scanner que vous souhaitez activer.
Vous pouvez gérer le nouveau paquet de scanner de la même manière que vous gérez les autres paquets de scanners dans le Trust Center. Par exemple, vous pouvez planifier ou désactiver le nouveau paquet de scanners. Pour plus d’informations, voir Gestion des paquets de scanners.
Vous pouvez gérer les scanners du nouveau paquet de scanners de la même manière que vous gérez les autres scanners. Par exemple, vous pouvez activer, désactiver ou planifier un scanner. Pour plus d’informations, voir Gestion des scanners.
Vous pouvez également surveiller et gérer directement la Native App associée à l’extension. Pour plus d’informations, voir Gestion des applications.
Vous pouvez voir les résultats générés par les paquets de scanners qui sont installés avec l’extension en interrogeant la vue SNOWFLAKE.TRUST_CENTER.FINDINGS. Par exemple, la requête suivante renvoie les résultats pour les paquets de scanners qui sont installés avec une extension qui a une extension_id de 4486988721 :
SELECT * FROM snowflake.trust_center.findings WHERE extension_id = 4486988721;
Pour trouver les identificateurs des extensions enregistrées, interrogez les Vue EXTENSIONS.
Pour plus d’informations sur les résultats du Trust Center, voir Résultats et Afficher les risques en matière de sécurité.
Dépannage de l’installation et de l’enregistrement des extensions¶
Si une requête sur la vue SNOWFLAKE.TRUST_CENTER.FINDINGS renvoie FAILED dans la colonne:code:COMPLETION_STATUS, alors l’exécution du scanner a échoué. Une raison possible de l’échec du scanner est que l’extension n’a pas reçu les privilèges requis. Assurez-vous que l’extension a reçu les privilèges décrits dans la section Étape 4 : Accorder des privilèges.
Après avoir accordé les privilèges requis, exécutez à nouveau le paquet du scanner pour générer de nouveaux résultats. Si une requête sur la vue SNOWFLAKE.TRUST_CENTER.FINDINGS renvoie toujours FAILED dans la colonne COMPLETION_STATUS, contactez le support Snowflake.