Configurer des clés managées par le client pour votre compte Azure Batch avec Azure Key Vault et l’identité managée

Par défaut Azure Batch utilise des clés managées par la plate-forme pour chiffrer toutes les données client stockées au sein d’Azure Batch Service, telles que les certificats ou les métadonnées de travail/tâche. Si vous le souhaitez, vous pouvez utiliser vos propres clés, c’est-à-dire des clés gérées par le client, pour chiffrer les données stockées dans Azure Batch.

Les clés que vous fournissez doivent être générées dans Azure Key Vault, et elles doivent être accessibles avec des identités managées pour les ressources Azure.

Il existe deux types d’identités managées : celles affectées par le système et celles affectées par l’utilisateur.

Vous pouvez créer votre compte Batch avec une identité managée affectée par le système ou créer une identité managée distincte affectée par l’utilisateur qui a accès aux clés gérées par le client. Consultez le tableau comparatif pour comprendre les différences et déterminer l’option qui convient le mieux à votre solution. Par exemple, si vous voulez utiliser la même identité managée pour accéder à plusieurs ressources Azure, une identité managée affectée par l’utilisateur est nécessaire. Sinon, une identité managée affectée par le système associée à votre compte Batch peut suffire. L’utilisation d’une identité managée affectée par l’utilisateur vous donne également la possibilité d’appliquer des clés gérées par le client au moment de la création du compte Batch, comme indiqué plus loin.

Créer un compte Batch avec une identité managée affectée par le système

Si vous n’avez pas besoin d’une identité managée distincte affectée par l’utilisateur, vous pouvez activer l’identité managée affectée par le système lorsque vous créez votre compte Batch.

Important

Une identité managée affectée par le système créée pour un compte Batch pour le chiffrement des données client, décrit dans ce document, ne peut pas être utilisée comme identité managée affectée par l’utilisateur sur un pool Batch. Si vous souhaitez utiliser la même identité managée sur le compte Batch et le pool Batch, utilisez plutôt une identité managée commune affectée par l’utilisateur.

Portail Azure

Dans le Portail Azure, lorsque vous créez des comptes Batch, sélectionnez Système affecté dans le type d’identité sous l’onglet Avancé.

Capture d’écran d’un nouveau compte Batch avec le type d’identité affecté par le système.

Une fois le compte créé, vous trouverez un GUID unique dans le champ ID du principal d’identité dans la section Propriétés. Le type d’identité affichera System assigned.

Capture d’écran montrant un GUID unique dans le champ ID de principal d’identité.

Vous avez besoin de cette valeur pour accorder à ce compte Batch l’accès au coffre de clés.

Azure CLI

Lorsque vous créez un nouveau compte Batch, précisez SystemAssigned pour le paramètre --identity.

resourceGroupName='myResourceGroup'
accountName='mybatchaccount'

az batch account create \
    --name $accountName \
    --resource-group $resourceGroupName \
    --locations regionName='West US 2' \
    --identity 'SystemAssigned'

Une fois le compte créé, vous pouvez vérifier que l’identité managée affectée par le système a été activée sur ce compte. Veillez à prendre note du PrincipalId, car cette valeur sera nécessaire pour accorder à ce compte Batch l’accès au coffre de clés.

az batch account show \
    --name $accountName \
    --resource-group $resourceGroupName \
    --query identity

Notes

L’identité managée affectée par le système créée dans un compte Batch est utilisée uniquement pour récupérer des clés gérées par le client dans le coffre de clés. Cette identité n’est pas disponible sur les pools Batch. Pour utiliser une identité managée affectée par l’utilisateur dans un pool, consultez Configurer des identités managées dans des pools Batch.

Créer une identité managée attribuée par l’utilisateur

Si vous préférez, vous pouvez créer une identité managée affectée par l’utilisateur qui peut être utilisée pour accéder à vos clés gérées par le client.

Vous avez besoin de la valeur de l’ID client de cette identité pour qu’elle puisse accéder au coffre de clés.

Configurer votre instance Azure Key Vault

Le coffre de clés Azure Key Vault où vos clés seront générées doit être créé dans le même locataire que votre compte Batch. Il n’a pas besoin d’être dans le même groupe de ressources ni même dans le même abonnement.

Créer un Azure Key Vault

Lors de la création d’une instance d’Azure Key Vault avec des clés gérées par le client pour Azure Batch, assurez-vous que la suppression réversible et la protection contre le vidage sont activées.

Capture d’écran de l’écran de création du coffre de clés.

Ajouter une stratégie d’accès à votre instance Azure Key Vault

Dans le Portail Azure, une fois Key Vault créé, ajoutez l’accès au compte Batch à l’aide de l’identité managée dans la stratégie d’accès sous Paramètres. Sous Autorisations de clé, sélectionnez Obtenir, Inclure la clé et Ne pas inclure la clé.

Capture d’écran montrant l’écran Ajouter une stratégie d’accès.

Dans le champ Sélectionner sous Principal, indiquez l’un des éléments suivants :

  • Pour une identité managée affectée par le système : Entrez le principalId que vous avez récupéré précédemment ou le nom du compte Batch.
  • Pour une identité managée affectée par l’utilisateur : Entrez l’ID client que vous avez récupéré précédemment ou le nom de l’identité managée affectée par l’utilisateur.

Capture d’écran de l’écran Principal.

Générer une clé dans Azure Key Vault

Dans le Portail Azure, accédez à l’instance Key Vault dans la section Clé, puis sélectionnez Générer/importer. Choisissez le type de cléRSA et une taille de clé RSA d’au moins 2048 bits. Les types de clés EC ne sont actuellement pas pris en charge en tant que clé gérée par le client sur un compte Batch.

Créer une clé

Une fois que la clé a été créée, cliquez sur la nouvelle clé et la version actuelle, copiez l’identificateur de clé dans la section Propriétés. Vérifiez que sous Opérations autorisées, les options Inclure la clé et Ne pas inclure la clé sont activées.

Activer des clés gérées par le client sur un compte Batch

Maintenant que les prérequis sont en place, vous pouvez activer les clés gérées par le client sur votre compte Batch.

Portail Azure

Dans le Portail Azure, accédez à la page compte Batch. Dans la section Chiffrement, activez Clé managée par le client. Vous pouvez utiliser directement l’identificateur de clé, ou sélectionner le coffre de clés, puis cliquer sur Sélectionner un coffre de clés et une clé.

Capture d’écran montrant la section Chiffrement et l’option permettant d’activer la clé gérée par le client

Azure CLI

Une fois que le compte Batch a été créé avec une identité managée affectée par le système et que l’accès à Key Vault a été accordé, mettez à jour le compte Batch avec l’URL {Key Identifier} sous le paramètre keyVaultProperties. Définissez également --encryption-key-source sur Microsoft.KeyVault.

az batch account set \
    --name $accountName \
    --resource-group $resourceGroupName \
    --encryption-key-source Microsoft.KeyVault \
    --encryption-key-identifier {YourKeyIdentifier}

Créer un compte Batch avec une identité managée affectée par l’utilisateur et des clés gérées par le client

À titre d’exemple, en utilisant le client .NET de gestion Batch, vous pouvez créer un compte Batch qui aura une identité managée affectée par l’utilisateur et des clés gérées par le client.

string subscriptionId = "Your SubscriptionID";
string resourceGroupName = "Your ResourceGroup name";
         
var credential = new DefaultAzureCredential();
ArmClient _armClient = new ArmClient(credential);

ResourceIdentifier resourceGroupResourceId = ResourceGroupResource.CreateResourceIdentifier(subscriptionId, resourceGroupName);
ResourceGroupResource resourceGroupResource = _armClient.GetResourceGroupResource(resourceGroupResourceId);

var data = new BatchAccountCreateOrUpdateContent(AzureLocation.EastUS)
{
    Encryption = new BatchAccountEncryptionConfiguration()
    {
        KeySource = BatchAccountKeySource.MicrosoftKeyVault,
        KeyIdentifier = new Uri("Your Key Azure Resource Manager Resource ID"),
    },

    Identity = new ManagedServiceIdentity(ManagedServiceIdentityType.UserAssigned)
    {
        UserAssignedIdentities = {
            [new ResourceIdentifier("Your Identity Azure Resource Manager ResourceId")] = new UserAssignedIdentity(),
        },
    }
};

var lro = resourceGroupResource.GetBatchAccounts().CreateOrUpdate(WaitUntil.Completed, "Your BatchAccount name", data);
BatchAccountResource batchAccount = lro.Value;

Mettez à jour la version de la clé managée par le client

Lors de la création d’une nouvelle version d’une clé, mettez à jour le compte Batch afin qu’il utilise cette nouvelle version. Procédez comme suit :

  1. Accédez à votre compte Batch dans le Portail Azure et affichez les paramètres de chiffrement.
  2. Saisissez l’URI de la nouvelle version de clé. Vous pouvez également sélectionner à nouveau le coffre de clés et la clé pour mettre à jour la version.
  3. Enregistrez vos modifications.

Vous pouvez également utiliser Azure CLI pour mettre à jour la version.

az batch account set \
    --name $accountName \
    --resource-group $resourceGroupName \
    --encryption-key-identifier {YourKeyIdentifierWithNewVersion}

Conseil

Vous pouvez faire permuter automatiquement vos clés en créant une stratégie de rotation des clés dans Key Vault. Quand vous spécifiez un identificateur de clé pour le compte Batch, utilisez l’identificateur de clé sans version pour activer la rotation automatique avec une stratégie de rotation valide. Pour plus d’informations, consultez Comment configurer la rotation des clés dans Key Vault.

Utiliser une clé différente pour le chiffrement Batch

Pour modifier la clé utilisée pour le chiffrement Batch, procédez comme suit :

  1. Accédez à votre compte Batch et affichez les paramètres de chiffrement.
  2. Entrez l’URI de la nouvelle clé. Vous pouvez également sélectionner le coffre de clés et choisir une nouvelle clé.
  3. Enregistrez vos modifications.

Vous pouvez également utiliser Azure CLI pour vous servir d’une clé différente.

az batch account set \
    --name $accountName \
    --resource-group $resourceGroupName \
    --encryption-key-identifier {YourNewKeyIdentifier}

Forum aux questions

  • Les clés managées par le client sont-elles prises en charge pour les comptes Batch existants ? Non. Les clés managées par le client sont uniquement prises en charge pour les nouveaux comptes Batch.
  • Puis-je sélectionner des tailles de clé RSA supérieures à 2048 bits ? Oui, les tailles de clé RSA de 3072 et 4096 bits sont également prises en charge.
  • Quelles opérations sont-elles disponibles après la révocation d’une clé gérée par le client ? La seule opération autorisée est la suppression de compte si Batch perd l’accès à la clé managée par le client.
  • Comment puis-je restaurer l’accès à mon compte Batch si je supprime accidentellement la clé de Key Vault ? Étant donné que la protection de purge et la suppression réversible sont activées, vous pouvez restaurer les clés existantes. Pour plus d’informations, consultez Restaurer un Azure Key Vault.
  • Puis-je désactiver les clés managées par le client ? Vous pouvez à tout moment définir le type de chiffrement du compte Batch sur « clé managée par Microsoft ». Vous êtes libre de supprimer ou de changer la clé par la suite.
  • Comment faire pivoter mes clés ? Les clés gérées par le client ne sont pas permutées automatiquement, sauf si la clé est sans version avec une stratégie de rotation de clé appropriée définie dans Key Vault. Pour permuter manuellement la clé, mettez à jour l’identificateur de clé auquel le compte est associé.
  • Après la restauration de l’accès, combien de temps faut-il pour que le compte Batch fonctionne à nouveau ? Cela peut prendre jusqu’à 10 minutes pour que le compte soit à nouveau accessible après la restauration.
  • Qu’arrive-t-il à mes ressources lorsque le compte Batch est indisponible ? Les pools actifs continuent de s’exécuter quand Batch perd l’accès aux clés gérées par le client. Cependant, les nœuds de ces pools vont passent à l’état Indisponible et les tâches vont cesser de s’exécuter (et être replacées dans la file d’attente). Une fois l’accès restauré, les nœuds redeviennent disponibles et les tâches sont redémarrées.
  • Ce mécanisme de chiffrement s’applique-t-il aux disques de machine virtuelle dans un pool Batch ? Non. Pour les pools de configuration d’Azure Cloud Services (qui sont déconseillés), aucun chiffrement n’est appliqué pour le système d’exploitation et le disque temporaire. Pour les pools de configuration de machine virtuelle, le système d’exploitation et tous les disques de données spécifiés sont chiffrés par défaut avec une clé managée par la plateforme Microsoft. Actuellement, vous ne pouvez pas spécifier votre propre clé pour ces disques. Pour chiffrer le disque temporaire des machines virtuelles pour un pool Batch avec une clé managée par la plate-forme Microsoft, vous devez activer la propriété diskEncryptionConfiguration dans votre pool de configuration de machine virtuelle. Pour les environnements très sensibles, nous vous recommandons d’activer le chiffrement de disque temporaire et d’éviter de stocker des données sensibles sur le système d’exploitation et les disques de données. Pour plus d’informations, consultez Créer un pool avec le chiffrement de disque activé.
  • L’identité managée affectée par le système sur le compte Batch est-elle disponible sur les nœuds de calcul ? Non. L’identité managée affectée par le système est actuellement utilisée uniquement pour accéder au coffre de clés Azure pour la clé gérée par le client. Pour utiliser une identité managée affectée par l’utilisateur sur des nœuds de calcul, consultez Configurer des identités managées dans des pools Batch.

Étapes suivantes