macos_filevault2
Ansible-роле для FileVault2 на macOS
Эта Ansible-роль реализует часть команд для включения
(только) FileVault2 с помощью fdesetup
, доступного в системах macOS версии 10.7 и новее.
Используется в Splinter, инструменте для развертывания macOS.
Пример плейбука
- vars:
filevault_additional_users_and_passwords:
- { username: "testuser", password: "test_password" }
filevault_certificate: yes
filevault_certificate_file: "/path/to/my/DER.cer"
filevault_showrecoverykey: yes
filevault_user_password: "пароль пользователя, для которого активируется FileVault"
- hosts: localhost
roles:
- marcomc.macos_filevault2
Переменные
Реализованные опции для включения
следующие:
fdesetup enable
[-outputplist]
[-forcerestart]
[-authrestart]
[-keychain | [-certificate путь_к_файлу_cer]]
[
[-defer путь_к_файлу]
[-forceatlogin максимальное_количество_попыток_отмены]
[-dontaskatlogout]
[-showrecoverykey]
]
[-norecoverykey]
[-verbose]
Каждая опция соответствует переменной ansible (и есть несколько дополнительных переменных для дополнительных функций).
verbose: no
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: '' # полезно, если вы хотите развернуть статический plist файл
filevault_keychain: no
filevault_keychain_file: no # игнорируется, если institutional_type равен 'certificate'
filevault_keychain_file_override: no # Перезаписать любую существующую копию '/Library/Keychains/FileVaultMaster.keychain'
filevault_certificate: no
filevault_certificate_file: "" # игнорируется, если institutional_type равен 'keychain'
filevault_norecoverykey: no # 'yes' означает, что используется только файловая цепочка FileVaultMaster в качестве ключа восстановления
# 'no' создаст персональный ключ восстановления
filevault_recovery_key_output_file: "~/Desktop/{{ ansible_hostname }}-персональный-ключ-восстановления.txt" # путь, где сохранить персональный ключ восстановления, созданный FileVault2
filevault_outputplist: no
filevault_defer: no
filevault_defer_file: "/dev/null"
filevault_showrecoverykey: no
filevault_dontaskatlogout: no
filevault_forcerestart: no
filevault_authrestart: no
filevault_forceatlogin: no
filevault_max_cancel_attempts: '-1' # (-1: игнорировать эту опцию, 0=в следующий раз, 9999=только запрос, не принуждать).
filevault_forcerestart: no
Вы можете выбрать свой предпочтительный метод установки, переключая опции так, как если бы вы использовали инструмент командной строки напрямую:
# Пример: Включить FileVault2, используя сертификат, без генерации персонального ключа восстановления
filevault_user: "{{ ansible_user_id }}"
filevault_user_password: "{{ ansible_become_pass }}"
filevault_additional_users_and_passwords:
- { username: "testuser6", password: "testest" }
filevault_certificate: yes
filevault_certificate_file: "~/Documents/certificate.cer"
filevault_norecoverykey: yes
что соответствует:
fdesetup enable -certificate ~/Documents/certificate.cer -norecoverykey -inputplist < путь_к_input_plist
Вводный список
Вы можете указать свой собственный plist, чтобы дополнительно настроить установку или если вам необходимо, чтобы другой процесс создал такой файл.
Если вы не укажете свой собственный plist (что является поведением по умолчанию), тогда plist будет сгенерирован динамически, собирая filevault_user
, filevault_user_password
и список filevault_additional_users_and_passwords
.
Установить институциональный ключ восстановления для компьютеров в вашей организации
Вы можете выбрать:
- развернуть заранее сгенерированный ключ восстановления Keychain
- развернуть DER сертификат, который будет добавлен в Keychain с ключом восстановления, сгенерированным на лету
Сертификат
Автоматически создать институциональный ключ восстановления с помощью указанного файла сертификата
Это мой любимый вариант, потому что подготовительные задачи минимальны, а результат такой же, как и при использовании опции
Keychain
.
Общее имя сертификата должно быть "FileVault Recovery Key".
Вы можете вручную создать DER сертификат:
- Создайте мастер-ключевой ключ FileVault
- экспортируйте только публичный сертификат в файл FileVaultRecoveryKey.cer.
В качестве альтернативы вы можете использовать скрипт splinter-tools/filevault-recovery-key-generator.sh.
Обязательно сохраните как ключевую цепочку, так и ее пароль в надежном месте (Bitwarden, LastPass, 1Password).
Сгенерированный самоподписанный сертификат будет называться FileVault Recovery Key (<ваше_имя_узла?>)
.
Ваше имя узла установлено как описание сертификата и не может быть изменено.
Если вы хотите, чтобы описание в скобках было отличным от вашего имени узла, вам нужно обмануть Keychain и временно установить имя компьютера на желаемое description
, а затем вернуть ваше имя узла к исходному значению.
#!/usr/bin/env bash
# Сохраните оригинальное имя хоста
ORIGINAL_HOSTNAME=$(eval hostname)
# Измените имя хоста на желаемое описание
sudo scutil --set HostName "Institutional"
# создайте ключевую цепочку с сертификатом
sh filevault-recovery-key-generator.sh FileVaultMaster
# восстановите оригинальное имя хоста
sudo scutil --set HostName "${ORIGINAL_HOSTNAME}"
Ключевая цепочка
Если вы выберете институциональный ключ восстановления, убедитесь, что предварительно создали файл ключевой цепочки FileVaultMaster.keychain
, содержащий ваш ключ восстановления, удалите приватный ключ и разверните его на своем компьютере:
- Создайте мастер-ключевой ключ FileVault
- Удалите приватный ключ из мастер-ключевой цепочки
- Разверните обновленную мастер-ключевую цепочку на каждом Mac
Разблокировать диск пользователя
Если пользователь забудет пароль своей учетной записи macOS и не сможет войти в свой Mac, вы можете использовать приватный ключ, который содержится в оригинальном файле FileVaultMaster.key
, чтобы разблокировать диск.
- Запустите macOS Recovery, удерживая Command-R во время запуска.
- Подключите внешний диск, на котором находится
private-recovery-key
или оригинальнаяFileVaultMaster.keychain
, содержащая приватный ключ. - Выберите
Утилиты > Терминал
в строке меню в macOS Recovery. - разблокируйте ключевую цепочку мастер FileVault
security unlock-keychain /path/to/FileVaultMaster.keychain
- Разблокируйте зашифрованный стартовый диск
# Диски APFS
diskutil ap unlockVolume "Имя зашифрованного диска" -recoveryKeychain /path/to/FileVaultMaster.keychain
# Диски Mac OS Extended (HFS Plus)
diskutil cs list # найдите UUID
diskutil cs unlockVolume {UUID} -recoveryKeychain /path/to/FileVaultMaster.keychain
Лицензия
Автор : Марко Масари Кальдероне (c) 2020 - marco@marcomc.com
Ansible role to configure FileVault2 on macOS. Also used in Splinter provisioning tool.
ansible-galaxy install marcomc/ansible-role-macos-filevault2