Безопасный доступ к Управляемому устройству HSM

Управляемое устройство HSM в Azure Key Vault — это облачная служба, которая защищает ключи шифрования. Это критически важные для бизнеса конфиденциальные данные, поэтому важно защищать доступ к управляемым устройствам HSM, предоставляя его только авторизованным приложениям и пользователям. В этой статье описывается модель контроля доступа к Управляемому устройству HSM. Здесь приводится описание процессов аутентификации и авторизации, а также сведения о том, как защитить доступ к управляемым устройствам HSM.

В этом учебнике приведен простой пример, демонстрирующий организацию разделения обязанностей и контроля доступа с помощью Azure RBAC и локальной функции RBAC для Управляемого устройства HSM. Дополнительные сведения о модели контроля доступа к Управляемому устройству HSM см. здесь.

Предварительные требования

Чтобы выполнить действия, описанные в этой статье, вам потребуется следующее:

Azure Cloud Shell

В Azure есть Azure Cloud Shell, интерактивная оболочка среды, с которой можно работать в браузере. Для работы со службами Azure можно использовать Bash или PowerShell с Cloud Shell. Для запуска кода из этой статьи можно использовать предварительно установленные команды Cloud Shell. Ничего дополнительного в локальной среде устанавливать не нужно.

Начало работы с Azure Cloud Shell

Параметр Пример и ссылка
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. Снимок экрана: пример открытия Azure Cloud Shell с помощью кнопки
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. Снимок экрана: запуск Cloud Shell в новом окне.
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. Снимок экрана: кнопка

Чтобы использовать Azure Cloud Shell:

  1. Запустите Cloud Shell.

  2. Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.

  3. Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.

  4. Нажмите клавишу ВВОД, чтобы выполнить код или команду.

Вход в Azure

Чтобы войти в Azure с помощью CLI, введите следующее:

az login

Дополнительные сведения о вариантах входа с помощью Azure CLI см. в этой статье.

Пример

В этом примере мы создадим приложение, которое использует 2048-битный ключ RSA для операций подписывания. Наше приложение выполняется на виртуальной машине Azure с управляемым удостоверением. Ключ RSA, используемый для подписывания, хранится в управляемом устройстве HSM.

Мы определили следующие роли для развертывания, аудита приложения и управления им:

  • Группа безопасности. Это ИТ-специалисты из отдела руководителя службы безопасности или аналогичного ему. Служба безопасности несет ответственность за надлежащее хранение ключей. Ключи RSA или EC для подписывания, а также ключи RSA или AES для шифрования данных.
  • Разработчики и операторы. Сотрудники, которые разрабатывают приложение и развертывают его в Azure. Участники этой команды не являются сотрудниками службы безопасности. Они не должны иметь доступа к конфиденциальным данным, таким как ключи RSA. Только развертываемое ими приложение должно иметь доступ к этим конфиденциальным данным.
  • Аудиторы. Эта роль предназначена для участников, не являющихся сотрудниками отдела разработки или общего ИТ-персонала. Они проверяют надлежащее использование и обслуживание сертификатов, ключей и секретов, а также обеспечивают соответствие стандартам безопасности данных.

Существует другая роль, которая выходит за рамки нашего приложения. Это администратор подписки (или группы ресурсов). Администратор подписки устанавливает начальные права доступа для группы безопасности. Он предоставляет ей доступ с помощью группы ресурсов, которая содержит ресурсы, необходимые для этого приложения.

Нам необходимо авторизовать для наших ролей следующие операции.

Группа безопасности:

  • создание управляемого устройства HSM;
  • скачивание домена безопасности управляемого устройства HSM (для аварийного восстановления);
  • Включите ведение журнала.
  • создание или импорт ключей;
  • создание резервных копий управляемого устройства HSM для аварийного восстановления;
  • настройка локальной функции RBAC для Управляемого устройства HSM, чтобы предоставить пользователям и приложениям разрешения на выполнение определенных операций;
  • периодическая смена ключей.

Разработчики и операторы:

  • получение от группы безопасности ссылки (URI) ключа RSA, который используется для подписывания;
  • разработка и развертывание приложения, которое программным способом обращается к ключу.

Аудиторы:

  • проверка дат окончания срока действия ключей, позволяющая поддерживать их актуальность;
  • отслеживание назначений ролей, чтобы доступ к ключам имели только полномочные пользователи и (или) приложения;
  • просмотр журналов управляемого устройства HSM для контроля правильности применения ключей в соответствии со стандартами безопасности данных.

В следующей таблице приведены сводные сведения о ролях для доступа к управляемому устройству HSM, назначаемых группам и ресурсам.

Роль Роль плоскости управления Роль плоскости данных
Группа безопасности Участник управляемого устройства HSM Администратор Управляемого устройства HSM
Разработчики и операторы None None
Аудиторы None Криптографический аудитор управляемого устройства HSM
Управляемое удостоверение виртуальной машины, используемой приложением Нет Криптографический пользователь управляемого устройства HSM
Управляемое удостоверение учетной записи хранения, используемой приложением Нет Шифрование службы "Управляемое устройство HSM"

Этим трем ролям группы, помимо разрешений в управляемом устройстве HSM, требуется доступ к другим ресурсам. Чтобы иметь возможность развернуть виртуальные машины (или компонент "Веб-приложения" Службы приложений Azure), разработчикам и операторам необходим доступ Contributor к таким типам ресурсов. Аудиторам требуется доступ на чтение к учетной записи хранения, где хранятся журналы управляемого устройства HSM.

Чтобы назначить роли плоскости управления (Azure RBAC), можно использовать портал Azure или любой другой интерфейс управления, например Azure CLI или Azure PowerShell. Чтобы назначить роли плоскости данных для управляемого устройства HSM, необходимо использовать Azure CLI.

Фрагменты кода Azure CLI в этом разделе созданы на основе следующих предположений:

  • Администратор Azure Active Directory уже создал группы безопасности, представляющие следующие три роли: группу безопасности Contoso, группу разработчиков приложения Contoso и группу аудиторов приложения Contoso. Администратор также добавил пользователей в группы, к которым они относятся.
  • Все ресурсы находятся в группе ресурсов ContosoAppRG.
  • Журналы управляемого устройства HSM хранятся в учетной записи хранения contosologstorage.
  • Управляемое устройство HSM ContosoKeyVault и учетная запись хранения contosologstorage находятся в одном расположении Azure.

Администратор подписки назначает группе безопасности роль Managed HSM Contributor. Эта роль позволяет группе безопасности управлять существующими управляемыми устройствами HSM и создавать новые. Если управляемые устройства HSM уже существуют, для управления ими следует назначить роль "Администратор управляемого устройства HSM".

# This role assignment allows Contoso Security Team to create new Managed HSMs
az role assignment create --assignee-object-id $(az ad group show -g 'Contoso Security Team' --query 'objectId' -o tsv) --assignee-principal-type Group --role "Managed HSM Contributor"

# This role assignment allows Contoso Security Team to become administrator of existing managed HSM
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso Security Team' --query 'objectId' -o tsv) --scope / --role "Managed HSM Administrator"

Группа безопасности настраивает ведение журнала, назначает роли аудиторам и приложению виртуальной машины.

# Enable logging
hsmresource=$(az keyvault show --hsm-name ContosoMHSM --query id -o tsv)
storageresource=$(az storage account show --name contosologstorage --query id -o tsv)
az monitor diagnostic-settings create --name MHSM-Diagnostics --resource $hsmresource --logs    '[{"category": "AuditEvent","enabled": true}]' --storage-account $storageresource

# Assign the "Crypto Auditor" role to Contoso App Auditors group. It only allows them to read.
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso App Auditors' --query 'objectId' -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Grant the "Crypto User" role to the VM's managed identity. It allows to create and use keys. 
# However it cannot permanently delete (purge) keys
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az vm identity show --name "vmname" --resource-group "ContosoAppRG" --query objectId -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Assign "Managed HSM Crypto Service Encryption User" role to the Storage account ID
storage_account_principal=$(az storage account show --id $storageresource --query identity.principalId -o tsv)
# (if no identity exists), then assign a new one
[ "$storage_account_principal" ] || storage_account_principal=$(az storage account update --assign-identity --id $storageresource)

az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto Service Encryption User" --assignee $storage_account_principal

В этом учебнике представлены в основном те действия, которые имеют отношение к управлению доступом. Другие действия и операции, связанные с развертыванием приложения на виртуальной машине, настройкой шифрования с управляемым клиентом ключом для учетной записи хранения и созданием управляемого устройства HSM, здесь не описываются, чтобы не усложнять пример для управления доступом и ролями.

В этом примере показан простой сценарий. Реальные сценарии могут быть более сложными. Вы можете настроить разрешения для хранилища ключей в соответствии со своими потребностями. Предположим, что группа безопасности предоставляет ссылки на ключ и секрет (URI и отпечатки), которые команда DevOps использует в своих приложениях. Разработчикам и операторам не требуется доступ к плоскости данных. Эта статья была посвящена вопросам, связанным с безопасностью хранилища ключей. Похожие рекомендации следует также учитывать при обеспечении защиты виртуальных машин, учетных записей хранения и других ресурсов Azure.

Ресурсы

Дальнейшие действия

Руководство для администраторов по началу работы см. в статье об Управляемом устройстве HSM.

Дополнительные сведения о ведении журналов использования Управляемого устройства HSM см. в этой статье.