Exemple de cas d'usage

Le même exemple de cas d'usage est présenté ici en script PowerShell et en programme .NET.

L'administrateur d'un parc de machines souhaite qu’un dossier donné soit en permanence chiffré sur les postes des utilisateurs.

Lorsqu'un utilisateur se connecte à sa session Windows, l’administrateur souhaite :

  • Connecter l’utilisateur à son compte Stormshield Data Security (en mode interactif) ;
  • S’assurer qu’un dossier donné est sécurisé avec le module Stormshield Data Team (et le créer si besoin) ;
  • Informer l’utilisateur de ce qu’il s’est passé.

Le dossier doit être systématiquement sécurisé par une règle Team et les fichiers chiffrés.

Ce scénario peut être implémenté à l’identique dans les deux modes d’utilisation du module Stormshield Data Connector.

Dans les deux implémentations, le dossier configuré est un dossier nommé « Secured » sur le bureau de l’utilisateur.

L’administrateur peut exécuter le script PowerShell ou le programme .NET au démarrage de la session Windows de l’utilisateur.

PowerShell

$securedFolder = Join-Path ([Environment]::GetFolderPath('Desktop')) 'Secured'

[Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')

try
{
  Connect-SDSUser -Interactive
  
  $report = ''
  
  if (-not (Test-Path -Path "$securedFolder"))
  {
    New-Item -Path "$securedFolder" -Type Directory | Out-Null
    $report += ("Folder '$securedFolder' has been created." + [Environment]::NewLine)
  }
  
  try
  {
    $rule = Get-SDSTeamRule -Path "$securedFolder"
  }
  catch [Stormshield.DataSecurity.Connector.Team.RuleNeedUpdateException]
  {
  }
  if ($rule -ne $null -and $rule.Secured -eq $false)
  {
    New-SDSTeamRule -Path "$securedFolder"
    $report += ("Rule has been created on folder '$securedFolder'." + [Environment]::NewLine)
  }
  
  Protect-SDSTeam -Path "$securedFolder"
  $report += ("Folder '$securedFolder' has been protected." + [Environment]::NewLine)
  
  [Windows.Forms.MessageBox]::Show($report)
}
catch
{
  [Windows.Forms.MessageBox]::Show($_.Exception)
}

.NET

using Stormshield.DataSecurity.Connector;
using Stormshield.DataSecurity.Connector.Common;
using Stormshield.DataSecurity.Connector.Kernel;
using Stormshield.DataSecurity.Connector.Team;

namespace SecuredFolder
{
  static class Program
  {
    private static string SecuredFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Secured");

    static void Main()
    {
      string value = ConfigurationManager.AppSettings["SecuredFolder"];
      if (!string.IsNullOrEmpty(value))
        SecuredFolder = value;

      try
      {
        using (Stormshield.DataSecurity.Connector.API api = new Stormshield.DataSecurity.Connector.API())
        {
          api.Execute("Connect-SDSUser -Interactive");

          string report = string.Empty;

          if (!Directory.Exists(SecuredFolder))
          {
            Directory.CreateDirectory(SecuredFolder);
            report += string.Format("Folder '{0}' has been created.{1}", SecuredFolder, Environment.NewLine);
          }

          object[] objects = null;
          try
          {
            objects = api.Execute(string.Format("Get-SDSTeamRule -Path '{0}'", SecuredFolder));
          }
          catch (Stormshield.DataSecurity.Connector.Team.RuleNeedUpdateException)
          {
          }
          if (objects != null && objects.Length == 1)
          {
            RuleInfoData rule = objects[0] as RuleInfoData;
            if (!rule.Secured)
            {
              api.Execute(string.Format("New-SDSTeamRule -Path '{0}'", SecuredFolder));
              report += string.Format("Rule has been created on folder '{0}'.{1}", SecuredFolder, Environment.NewLine);
            }
          }

          api.Execute(string.Format("Protect-SDSTeam -Path '{0}'", SecuredFolder));
          report += string.Format("Folder '{0}' has been protected.{1}", SecuredFolder, Environment.NewLine);

          MessageBox.Show(report);
        }
      }
      catch (System.Exception exception)
      {
        MessageBox.Show(exception.ToString());
      }
    }
  }
}