marcomc.macos_filevault2
Rôle Ansible FileVault2 pour macOS
Ce rôle Ansible implémente un sous-ensemble de commandes pour activer
(uniquement) FileVault2 via fdesetup
présent sur les systèmes macOS v10.7 ou plus récents.
Utilisé dans Splinter, un outil de provisionnement avec des choix définis pour macOS.
Exemple de Playbook
- vars:
filevault_additional_users_and_passwords:
- { username: "testuser", password: "test_password" }
filevault_certificate: oui
filevault_certificate_file: "/chemin/vers/mon/DER.cer"
filevault_showrecoverykey: oui
filevault_user_password: "mot de passe de l'utilisateur pour activer FileVault"
- hosts: localhost
roles:
- marcomc.macos_filevault2
Variables
Le sous-ensemble d'options activer
mis en œuvre est
fdesetup enable
[-outputplist]
[-forcerestart]
[-authrestart]
[-keychain | [-certificate chemin_vers_fichier_cer]]
[
[-defer chemin_fichier]
[-forceatlogin max_tentatives_annulation]
[-dontaskatlogout]
[-showrecoverykey]
]
[-norecoverykey]
[-verbose]
Chaque option a été mappée à une variable ansible (et il y a quelques variables supplémentaires pour plus de fonctionnalités)
verbose: non
filevault_user: "{{ ansible_user_id }}"
filevault_user_password: "{{ ansible_become_pass }}"
filevault_additional_users_and_passwords: []
# - { username: "testuser6", password: "testest" }
# - { username: "testuser7", password: "testest2" }
filevault_input_plist: '' # utile si vous souhaitez déployer un fichier plist statique
filevault_keychain: non
filevault_keychain_file: non # ignoré si institutional_type est 'certificate'
filevault_keychain_file_override: non # Écraser toute copie existante '/Library/Keychains/FileVaultMaster.keychain'
filevault_certificate: non
filevault_certificate_file: "" # ignoré si institutional_type est 'keychain'
filevault_norecoverykey: non # 'oui' spécifie que seul le trousseau FileVaultMaster est utilisé comme clé de récupération
# 'non' générera une clé de récupération personnelle
filevault_recovery_key_output_file: "~/Bureau/{{ ansible_hostname }}-cle-de-recuperation-personnelle.txt" # le chemin où enregistrer la clé de récupération personnelle générée par FileVault2
filevault_outputplist: non
filevault_defer: non
filevault_defer_file: "/dev/null"
filevault_showrecoverykey: non
filevault_dontaskatlogout: non
filevault_forcerestart: non
filevault_authrestart: non
filevault_forceatlogin: non
filevault_max_cancel_attempts: '-1' # (-1: ignorer cette option, 0=prochaine fois, 9999=demander seulement, sans forcer).
filevault_forcerestart: non
Vous pouvez obtenir votre méthode d'installation préférée en basculant les options comme si vous utilisiez l'outil de ligne de commande directement :
# Exemple : Activer FileVault2 en utilisant un certificat sans générer de clé de récupération personnelle
filevault_user: "{{ ansible_user_id }}"
filevault_user_password: "{{ ansible_become_pass }}"
filevault_additional_users_and_passwords:
- { username: "testuser6", password: "testest" }
filevault_certificate: oui
filevault_certificate_file: "~/Documents/certificate.cer"
filevault_norecoverykey: oui
Ce qui correspond à :
fdesetup enable -certificate ~/Documents/certificate.cer -norecoverykey -inputplist < input_plist
Liste d'Entrée
Vous pouvez spécifier votre propre plist d'entrée pour personnaliser davantage votre installation ou si vous avez besoin d'un autre processus pour générer ce fichier.
Si vous ne spécifiez pas votre propre plist d'entrée (ce qui est censé être le comportement par défaut), alors un plist sera généré dynamiquement en rassemblant filevault_user
et filevault_user_password
ainsi que la liste de filevault_additional_users_and_passwords
.
Définir une clé de récupération institutionnelle
pour les ordinateurs de votre organisation
Vous pouvez choisir de :
- déployer une clé de récupération Keychain pré-générée
- déployer un certificat DER qui sera ajouté à Keychain en tant que clé de récupération générée à la volée
Certificat
Créez automatiquement la clé de récupération institutionnelle avec le fichier de certificat fourni.
C'est mon option préférée car les tâches de préparation sont minimes et le résultat est le même que pour l'option
Keychain
.
Le nom commun du certificat doit être "FileVault Recovery Key".
Vous pouvez générer un certificat DER manuellement :
- Créer une trousseau de clés maître FileVault
- exportez UNIQUEMENT l'élément de certificat public dans FileVaultRecoveryKey.cer.
Alternativement, vous pouvez utiliser le script splinter-tools/filevault-recovery-key-generator.sh.
Assurez-vous de conserver à la fois la trousseau et son mot de passe dans un endroit sûr (Bitwarden, LastPass, 1Password).
Le certificat auto-signé généré sera nommé FileVault Recovery Key (<votre_hostname>)
.
Votre nom d’hôte est défini comme la description du certificat et ne peut pas être changé.
Si vous souhaitez que la description entre parenthèses soit différente de votre nom d’hôte, vous devez tromper le trousseau et temporairement définir le nom de votre ordinateur sur la description
de certificat souhaitée, puis revenir à l'original.
#!/usr/bin/env bash
# Stocker le nom d'hôte original
ORIGINAL_HOSTNAME=$(eval hostname)
# Changer le nom d'hôte à la description désirée
sudo scutil --set HostName "Institutionnel"
# créer la trousseau avec le certificat
sh filevault-recovery-key-generator.sh FileVaultMaster
# restaurer le nom d'hôte original
sudo scutil --set HostName "${ORIGINAL_HOSTNAME}"
Trousseau
Si vous sélectionnez la clé de récupération institutionnelle du trousseau, assurez-vous de générer au préalable le fichier de trousseau FileVaultMaster.keychain
contenant votre clé de récupération, supprimez la clé privée, et déployez-le sur votre machine :
- Créer une trousseau de clés maître FileVault
- Supprimer la clé privée de la trousseau maître
- Déployez la trousseau maître mise à jour sur chaque Mac
Déverrouiller le disque de démarrage d'un utilisateur
Si un utilisateur oublie son mot de passe de compte utilisateur macOS et ne peut pas se connecter à son Mac, vous pouvez utiliser la clé privée qui était contenue dans le fichier original FileVaultMaster.key
, pour déverrouiller le disque.
Démarrez à partir de la récupération macOS en maintenant Commande-R pendant le démarrage.
Connectez le lecteur externe contenant la
private-recovery-key
ou le fichierFileVaultMaster.keychain
original qui contient la clé privée.Choisissez
Utilitaires > Terminal
dans la barre de menus en mode de récupération macOS.déverrouillez le trousseau maître FileVault
security unlock-keychain /chemin/vers/FileVaultMaster.keychain
Déverrouillez le disque de démarrage chiffré
# Disques APFS diskutil ap unlockVolume "Nom du disque chiffré" -recoveryKeychain /chemin/vers/FileVaultMaster.keychain # Disques Mac OS Extended (HFS Plus) diskutil cs list # trouvez l'UUID diskutil cs unlockVolume {UUID} -recoveryKeychain /chemin/vers/FileVaultMaster.keychain
Licence
Auteur : Marco Massari Calderone (c) 2020 - marco@marcomc.com
Ansible role to configure FileVault2 on macOS. Also used in Splinter provisioning tool.
ansible-galaxy install marcomc.macos_filevault2