Настройка управляемых клиентом ключей для azure Elastic SAN

Все данные, записанные в том Elastic SAN, автоматически шифруются неактивных данных с помощью ключа шифрования данных (DEK). Azure использует шифрование конверта для шифрования DEK с помощью ключа шифрования ключей (KEK). По умолчанию KEK управляется платформой (управляется корпорацией Майкрософт), но вы можете создавать собственные и управлять ими.

В этой статье показано, как настроить шифрование группы томов Elastic SAN с ключами, управляемыми клиентом, хранящимися в Azure Key Vault.

Ограничения

В следующем списке содержатся регионы, в которых сейчас доступна эластичная san, и в которых регионы поддерживают хранилище, избыточное между зонами (ZRS), так и локально избыточное хранилище (LRS) или только LRS:

  • Северная Африка - LRS
  • Восточная Азия - LRS
  • Юго-Восточная Азия - LRS
  • Южная Бразилия - LRS
  • Центральная Канада - LRS
  • Центральная Франция - LRS и ZRS
  • Западная Германия - LRS
  • Восточная Австралия - LRS
  • Северная Европа - LRS и ZRS
  • Западная Европа - LRS и ZRS
  • Южная Великобритания - LRS
  • Восточная Япония - LRS
  • Центральная Корея - LRS
  • Центральная часть США
  • Восточная часть США - LRS
  • Южная часть США - LRS
  • Восточная часть США 2 - LRS
  • Западная часть США 2 - LRS и ZRS
  • Западная часть США 3 - LRS
  • Центральная Швеция - LRS
  • Северная Швейцария - LRS

Необходимые компоненты

Для выполнения операций, описанных в этой статье, необходимо подготовить учетную запись Azure и средства управления, которые вы планируете использовать. Подготовка включает установку необходимых модулей, вход в учетную запись и настройку переменных Для PowerShell и Azure CLI. Тот же набор переменных используется в этой статье, поэтому их настройка теперь позволяет использовать одни и те же переменные во всех примерах.

Для выполнения операций, описанных в этой статье, с помощью PowerShell:

  1. Установите последнюю версию Azure PowerShell, если это еще не сделано.

  2. После установки Azure PowerShell установите версию 0.1.2 или более позднюю версию расширения Elastic SAN.Install-Module -Name Az.ElasticSan -Repository PSGallery

  3. войдите в Azure.

    Connect-AzAccount
    

Создание переменных для использования в примерах PowerShell в этой статье

Скопируйте пример кода и замените весь текст заполнителя собственными значениями. Используйте одни и те же переменные во всех примерах, приведенных в этой статье:

# Define some variables
# The name of the resource group where the resources will be deployed.
$RgName          = "ResourceGroupName"

# The name of the Elastic SAN that contains the volume group to be configured.
$EsanName        = "ElasticSanName"

# The name of the Elastic SAN volume group to be configured.
$EsanVgName      = "ElasticSanVolumeGroupName"

# The region where the new resources will be created.
$Location        = "Location"

# The name of the Azure Key Vault that will contain the KEK.
$KvName          = "KeyVaultName"

# The name of the Azure Key Vault key that is the KEK.
$KeyName         = "KeyName"

# The name of the user-assigned managed identity, if applicable.
$ManagedUserName = "ManagedUserName"

Настройка хранилища ключей

Для хранения ключей, управляемых клиентом, можно использовать новое или существующее хранилище ключей. Зашифрованный ресурс и хранилище ключей могут находиться в разных регионах или подписках в одном клиенте Идентификатора Microsoft Entra. Дополнительные сведения об Azure Key Vault см. в статьях Общие сведения об Azure Key Vault и Что такое Azure Key Vault.

Использование ключей, управляемых клиентом, с шифрованием, требует, чтобы защита от обратимого удаления и очистки была включена для хранилища ключей. Обратимое удаление включено по умолчанию при создании нового хранилища ключей и не может быть отключено. Вы можете включить защиту очистки либо при создании хранилища ключей, либо после его создания. Шифрование Azure Elastic SAN поддерживает ключи RSA размером 2048, 3072 и 4096.

Azure Key Vault поддерживает авторизацию с помощью Azure RBAC с помощью модели разрешений Azure RBAC. Корпорация Майкрософт рекомендует использовать модель разрешений Azure RBAC для политик доступа к хранилищу ключей. Дополнительные сведения см. в статье "Предоставление разрешений приложениям для доступа к хранилищу ключей Azure" с помощью Azure RBAC.

Существует два этапа подготовки хранилища ключей в качестве хранилища для keKs группы томов:

  • Создайте новое хранилище ключей с включенным обратимым удалением и защитой очистки или включите защиту очистки для существующего.
  • Создайте или назначьте роль Azure RBAC, которая содержит резервное копирование, создайте удаление, получите разрешения на восстановление списка получения списка .

Следующий пример:

  • Создает новое хранилище ключей с поддержкой обратимого удаления и защиты очистки.
  • Возвращает имя участника-пользователя учетной записи пользователя.
  • Назначает роль офицера шифрования Key Vault для нового хранилища ключей вашей учетной записи.

Используйте те же переменные, которые вы определили ранее в этой статье.

# Setup the parameters to create the key vault.
$NewKvArguments = @{
    Name                    = $KvName
    ResourceGroupName       = $RgName
    Location                = $Location
    EnablePurgeProtection   = $true
    EnableRbacAuthorization = $true
}

# Create the key vault.
$KeyVault = New-AzKeyVault @NewKvArguments

# Get the UPN of the currently loggged in user.
$MyAccountUpn = (Get-AzADUser -SignedIn).UserPrincipalName

# Setup the parameters to create the role assignment.
$CrptoOfficerRoleArguments = @{
    SignInName         = $MyAccountUpn
    RoleDefinitionName = "Key Vault Crypto Officer"
    Scope              = $KeyVault.ResourceId
}

# Assign the Cypto Officer role to your account for the key vault.
New-AzRoleAssignment @CrptoOfficerRoleArguments

Дополнительные сведения о том, как включить защиту от очистки в существующем хранилище ключей с помощью PowerShell, см. в статье Общие сведения о восстановлении Azure Key Vault.

Дополнительные сведения о назначении роли RBAC с помощью PowerShell см. в статье "Назначение ролей Azure с помощью Azure PowerShell".

Добавление ключа

Далее добавьте ключ в хранилище ключей. Прежде чем добавить ключ, убедитесь, что вы назначили себе роль офицера шифрования Key Vault.

служба хранилища Azure и шифрование Elastic SAN поддерживают ключи RSA размеров 2048, 3072 и 4096. Дополнительные сведения о поддерживаемых типах ключей см. в статье Общие сведениях о ключах.

Используйте эти примеры команд, чтобы добавить ключ в хранилище ключей с помощью PowerShell. Используйте те же переменные, которые вы определили ранее в этой статье.

# Get the key vault where the key is to be added.
$KeyVault = Get-AzKeyVault -ResourceGroupName $RgName -VaultName $KvName

# Setup the parameters to add the key to the vault.
$NewKeyArguments = @{
    Name        = $KeyName
    VaultName   = $KeyVault.VaultName
    Destination = "Software"
}

# Add the key to the vault.
$Key = Add-AzKeyVaultKey @NewKeyArguments

Выбор стратегии смены ключей

Следуя рекомендациям по шифрованию, необходимо повернуть ключ, который защищает группу томов Elastic SAN по регулярному расписанию, как правило, каждые два года. Azure Elastic SAN никогда не изменяет ключ в хранилище ключей, но вы можете настроить политику поворота ключей для смены ключа в соответствии с требованиями соответствия требованиям. Дополнительные сведения см. в статье "Настройка автоматического поворота криптографического ключа" в Azure Key Vault.

После смены ключа в хранилище ключей необходимо обновить конфигурацию шифрования для группы томов Elastic SAN, чтобы использовать новую версию ключа. Ключи, управляемые клиентом, поддерживают автоматическое и ручное обновление версии KEK. Определите, какой подход необходимо использовать перед настройкой ключей, управляемых клиентом, для новой или существующей группы томов.

Дополнительные сведения о смене ключей см. в разделе "Обновление версии ключа".

Важно!

При изменении ключа или версии ключа защита корневого ключа шифрования данных изменяется, но данные в группе томов Azure Elastic SAN всегда шифруются. С вашей стороны не требуется никаких дополнительных действий для обеспечения защиты ваших данных. Смена ключевой версии не влияет на производительность и не связана с ней простоем.

Автоматическая смена версий ключей

Azure Elastic SAN может автоматически обновлять управляемый клиентом ключ, используемый для шифрования, чтобы использовать последнюю версию ключа из хранилища ключей. Эластичная san проверка ежедневно хранилище ключей для новой версии ключа. Когда новая версия становится доступной, она автоматически начинает использовать последнюю версию ключа для шифрования. После смены ключа подождите 24 часа, прежде чем отключить старую версию.

Важно!

Если группа томов Elastic SAN была настроена для ручного обновления версии ключа и вы хотите изменить ее для автоматического обновления, измените версию ключа на пустую строку. Дополнительные сведения об изменении версии ключа вручную см. в статье Автоматическое обновление версии ключа.

Смена версий вручную

Если вы предпочитаете вручную обновить версию ключа, укажите универсальный код ресурса (URI) для определенной версии во время настройки шифрования с помощью ключей, управляемых клиентом. При указании универсального кода ресурса (URI) эластичная SAN не будет автоматически обновлять версию ключа при создании новой версии в хранилище ключей. Чтобы эластичная SAN использовала новую версию ключа, ее необходимо обновить вручную.

Чтобы найти универсальный код ресурса (URI) для определенной версии ключа в портал Azure:

  1. Перейдите в службу хранилища ключей.
  2. В разделе "Объекты" выберите ключи.
  3. Выберите нужный ключ для просмотра его версий.
  4. Выберите версию ключа для просмотра ее параметров.
  5. Скопируйте значение поля Идентификатор ключа, которое предоставляет универсальный код ресурса (URI).
  6. Сохраните скопированный текст для последующего использования при настройке шифрования для группы томов.

Screenshot showing key vault key URI in Azure portal.

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

При включении ключей шифрования, управляемых клиентом для группы томов Elastic SAN, необходимо указать управляемое удостоверение, которое используется для авторизации доступа к хранилищу ключей, содержащего ключ. Управляемое удостоверение должно иметь следующие разрешения:

  • get
  • wrapkey
  • unwrapkey

Управляемое удостоверение, которое является авторизованным доступом к хранилищу ключей, может быть назначаемое пользователем или назначаемое системой управляемое удостоверение. Дополнительные сведения об управляемых удостоверениях, назначаемых системой и пользователем, см. в разделе Типы управляемых удостоверений.

При создании группы томов для нее автоматически создается удостоверение, назначаемое системой. Если вы хотите использовать удостоверение, назначаемое пользователем, создайте его перед настройкой ключей шифрования, управляемых клиентом, для группы томов. Дополнительные сведения о том, как создать управляемое удостоверение, назначаемое пользователем, и управлять им, см. в статье Управление управляемым удостоверением, назначаемым пользователем.

Использование управляемого удостоверения, назначаемого пользователем, для авторизации доступа

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

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

Управляемое удостоверение, назначаемое пользователем, является автономным ресурсом Azure. Дополнительные сведения об управляемых удостоверениях, назначаемых пользователем, см. в разделе Типы управляемых удостоверений. Дополнительные сведения о том, как создать управляемое удостоверение, назначаемое пользователем, и управлять им, см. в статье Управление управляемым удостоверением, назначаемым пользователем.

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

В приведенном ниже примере показано, как выполнить следующие задачи.

  • Создайте управляемое удостоверение, назначаемое пользователем.
  • Дождитесь завершения создания удостоверения, назначаемого пользователем.
  • PrincipalId Получите из нового удостоверения.
  • Назначьте роль RBAC новому удостоверению, область в хранилище ключей.

Используйте те же переменные, которые вы определили ранее в этой статье.

# Create a new user-assigned managed identity.
$UserIdentity = New-AzUserAssignedIdentity -ResourceGroupName $RgName -Name $ManagedUserName -Location $Location

Совет

Дождитесь завершения создания удостоверения, назначаемого пользователем, примерно через 1 минуту.

# Get the `PrincipalId` for the new identity.
$PrincipalId = $UserIdentity.PrincipalId

# Setup the parameters to assign the Crypto Service Encryption User role.
$CryptoUserRoleArguments = @{
    ObjectId           = $PrincipalId
    RoleDefinitionName = "Key Vault Crypto Service Encryption User"
    Scope              = $KeyVault.ResourceId
}

# Assign the Crypto Service Encryption User role to the managed identity so it can access the key in the vault.
New-AzRoleAssignment @CryptoUserRoleArguments

Использование управляемого удостоверения, назначаемого системой, для авторизации доступа

Управляемое удостоверение, назначаемое системой, связано с экземпляром службы Azure, например группой томов Azure Elastic SAN.

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

При создании группы томов удостоверение, назначаемое системой, автоматически создается для него, если -IdentityType "SystemAssigned" параметр указан с New-AzElasticSanVolumeGroup помощью команды. Удостоверение, назначаемое системой, недоступно до создания группы томов. Чтобы получить доступ к ключу шифрования в хранилище ключей, необходимо также назначить соответствующую роль, например роль пользователя шифрования шифрования Key Vault. Таким образом, вы не можете настроить управляемые клиентом ключи для использования удостоверения, назначаемого системой во время создания группы томов. При создании новой группы томов с ключами, управляемыми клиентом, необходимо использовать удостоверение, назначаемое пользователем при создании группы томов, можно настроить назначаемое системой удостоверение после его создания.

Используйте этот пример кода, чтобы назначить необходимую роль RBAC управляемому удостоверению, назначенному системой, область в хранилище ключей. Используйте те же переменные, которые вы определили ранее в этой статье.

# Get the Elastic SAN volume group.
$ElasticSanVolumeGroup = Get-AzElasticSanVolumeGroup -Name $EsanVgName -ElasticSanName $EsanName -ResourceGroupName $RgName

# Generate a system-assigned identity if one does not already exist.
If ($ElasticSanVolumeGroup.IdentityPrincipalId -eq $null) {
Update-AzElasticSanVolumeGroup -ResourceGroupName $RgName -ElasticSanName $EsanName -Name $EsanVgName -IdentityType "SystemAssigned"}

# Get the `PrincipalId` (system-assigned identity) of the volume group.
$PrincipalId = $ElasticSanVolumeGroup.IdentityPrincipalId

# Setup the parameters to assign the Crypto Service Encryption User role.
$CryptoUserRoleArguments = @{
    ObjectId           = $PrincipalId
    RoleDefinitionName = "Key Vault Crypto Service Encryption User"
    Scope              = $KeyVault.ResourceId
}

# Assign the Crypto Service Encryption User role.
New-AzRoleAssignment @CryptoUserRoleArguments

Настройка ключей, управляемых клиентом для группы томов

Выберите модуль Azure PowerShell или вкладку Azure CLI, чтобы узнать, как настроить ключи шифрования, управляемые клиентом, с помощью предпочтительного средства управления.

Теперь, когда вы выбрали PowerShell, выберите вкладку, соответствующую настройке параметров во время создания новой группы томов, или обновите параметры для существующего.

Используйте этот пример для настройки ключей, управляемых клиентом, с автоматическим обновлением версии ключа во время создания новой группы томов с помощью PowerShell:

# Setup the parameters to create the volume group.
$NewVgArguments        = @{
    Name                         = $EsanVgName
    ElasticSanName               = $EsanName
    ResourceGroupName            = $RgName
    ProtocolType                 = "Iscsi"
    Encryption                   = "EncryptionAtRestWithCustomerManagedKey"
    KeyName                      = $KeyName
    KeyVaultUri                  = $KeyVault.VaultUri
    IdentityType                 = "UserAssigned"
    IdentityUserAssignedIdentity = @{$UserIdentity.Id=$UserIdentity}
    EncryptionIdentityEncryptionUserAssignedIdentity = $UserIdentity.Id
}

# Create the volume group.
New-AzElasticSanVolumeGroup @NewVgArguments

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

# Setup the parameters to create the volume group.
$NewVgArguments        = @{
    Name                         = $EsanVgName
    ElasticSanName               = $EsanName
    ResourceGroupName            = $RgName
    ProtocolType                 = "Iscsi"
    Encryption                   = "EncryptionAtRestWithCustomerManagedKey"
    KeyName                      = $KeyName
    KeyVaultUri                  = $KeyVault.VaultUri
    KeyVersion                   = $Key.Version
    IdentityType                 = "UserAssigned"
    IdentityUserAssignedIdentity = @{$UserIdentity.Id=$UserIdentity}
    EncryptionIdentityEncryptionUserAssignedIdentity = $UserIdentity.Id
}

# Create the volume group.
New-AzElasticSanVolumeGroup @NewVgArguments

Следующие шаги