Azure Elastic SAN에 대한 고객 관리형 키 구성
Elastic SAN 볼륨에 기록된 모든 데이터는 DEK(데이터 암호화 키)를 사용하여 미사용 시 자동으로 암호화됩니다. Azure는 봉투 암호화를 사용하여 KEK(키 암호화 키)를 사용하여 DEK를 암호화합니다. 기본적으로 KEK는 플랫폼 관리(Microsoft에서 관리)되지만 직접 만들고 관리할 수 있습니다.
이 문서에서는 Azure Key Vault에 저장된 고객 관리형 키를 사용하여 Elastic SAN 볼륨 그룹의 암호화를 구성하는 방법을 보여 줍니다.
제한 사항
다음 목록에는 현재 Elastic SAN을 사용할 수 있는 지역과 ZRS(영역 중복 스토리지)와 LRS(로컬 중복 스토리지)를 모두 지원하거나 LRS만 지원하는 지역이 포함되어 있습니다.
- 오스트레일리아 동부 - LRS
- 브라질 남부 - LRS
- 캐나다 중부 - LRS
- 미국 중부 - LRS
- 동아시아 - LRS
- 미국 동부 - LRS
- 미국 동부 2 - LRS
- 프랑스 중부 - LRS 및 ZRS
- 독일 중서부 - LRS
- 인도 중부 - LRS
- 일본 동부 - LRS
- 한국 중부 - LRS
- 북유럽 - LRS 및 ZRS
- 노르웨이 동부 - LRS
- 남아프리카 공화국 북부 - LRS
- 미국 중남부 - LRS
- 동남 아시아 - LRS
- 스웨덴 중부 - LRS
- 스위스 북부 - LRS
- 아랍에미리트 북부 - LRS
- 영국 남부 - LRS
- 서유럽 - LRS 및 ZRS
- 미국 서부 2 - LRS 및 ZRS
- 미국 서부 3 - LRS
Elastic SAN은 다음 지역에서도 사용할 수 있지만 가용성 영역 지원은 제공되지 않습니다.
- 캐나다 동부 - LRS
- 일본 서부 - LRS
- 미국 중북부 - LRS
이러한 지역을 사용하도록 설정하려면 다음 명령을 실행하여 필요한 기능 플래그를 등록합니다.
Register-AzProviderFeature -FeatureName "EnableElasticSANRegionalDeployment" -ProviderNamespace "Microsoft.ElasticSan"
필수 조건
이 문서에 설명된 작업을 수행하려면 Azure 계정 및 사용하려는 관리 도구를 준비해야 합니다. 준비에는 필요한 모듈 설치, 계정에 로그인, PowerShell 및 Azure CLI에 대한 변수 설정이 포함됩니다. 이 문서 전체에서 동일한 변수 집합이 사용되므로 이제 변수를 설정하면 모든 샘플에서 동일한 변수를 사용할 수 있습니다.
PowerShell을 사용하여 이 문서에 설명된 작업을 수행하려면:
아직 설치하지 않은 경우 Azure PowerShell 최신 버전을 설치합니다.
Azure PowerShell이 설치되면
Install-Module -Name Az.ElasticSan -Repository PSGallery
가 있는 Elastic SAN 확장 버전 0.1.2 이상을 설치합니다.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 ID 테넌트에 있는 다른 지역 또는 구독에 있을 수 있습니다. Azure Key Vault에 대한 자세한 내용을 보려면 Azure Key Vault 개요 및 Azure Key Vault란?을 참조하세요.
암호화에서 고객 관리형 키를 사용하려면 키 자격 증명 모음에 대해 일시 삭제 및 제거 보호를 모두 사용하도록 설정해야 합니다. 일시 삭제는 새 키 자격 증명 모음을 만들 때 기본적으로 사용하도록 설정되며 해제할 수 없습니다. 키 자격 증명 모음을 만들 때 또는 만든 후에 제거 보호를 사용하도록 설정할 수 있습니다. Azure Elastic SAN 암호화는 2048, 3072 및 4096 크기의 RSA 키를 지원합니다.
Azure Key Vault는 Azure RBAC 권한 모델을 통해 Azure RBAC 권한 부여를 지원합니다. Microsoft는 키 자격 증명 모음 액세스 정책보다 Azure RBAC 권한 모델을 사용하는 것을 권장합니다. 자세한 내용은 Azure RBAC를 사용하여 Azure Key Vault에 액세스할 수 있도록 애플리케이션에 권한 부여를 참조하세요.
볼륨 그룹 KEK에 대한 저장소로 키 자격 증명 모음을 준비하는 데는 두 가지 단계가 있습니다.
- 일시 삭제 및 제거 보호를 사용하도록 설정한 새 키 자격 증명 모음을 만들거나 기존 키 자격 증명 모음에 제거 보호를 사용하도록 설정합니다.
- backup create delete get import get list update restore 권한이 있는 Azure RBAC 역할을 만들거나 할당합니다.
다음 예제를 참조하세요.
- 일시 삭제 및 제거 보호를 사용하도록 설정한 새 키 자격 증명 모음을 만듭니다.
- 사용자 계정의 UPN을 가져옵니다.
- 새 키 자격 증명 모음에 대한 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 logged 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 복구 개요를 참조하세요.
PowerShell을 사용하여 RBAC 역할을 할당하는 방법에 대한 자세한 내용은 Azure PowerShell을 사용하여 Azure 역할 할당을 참조하세요.
키 추가
다음으로 키 자격 증명 모음에 키를 추가합니다. 키를 추가하기 전에 Key Vault 암호화 책임자 역할을 자신에게 할당했는지 확인합니다.
Azure Storage 및 Elastic SAN 암호화는 2048, 3072 및 4096 크기의 RSA 키를 지원합니다. 지원되는 키 유형에 대한 자세한 내용은 키 정보를 참조하세요.
이러한 샘플 명령을 사용하여 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
키 회전 전략 선택
암호화 모범 사례를 따르는 것은 일반적으로 최소 2년마다 정기적으로 Elastic SAN 볼륨 그룹을 보호하는 키를 회전하는 것을 의미합니다. Azure Elastic SAN은 키 자격 증명 모음의 키를 수정하지 않지만 규정 준수 요구 사항에 따라 키를 회전하도록 키 회전 정책을 구성할 수 있습니다. 자세한 내용은 Azure Key Vault에서 암호화 키 자동 회전 구성을 참조하세요.
키 자격 증명 모음에서 키를 회전한 후에는 새 키 버전을 사용하도록 Elastic SAN 볼륨 그룹에 대한 암호화 구성을 업데이트해야 합니다. 고객 관리형 키는 KEK 버전의 자동 업데이트와 수동 업데이트를 모두 지원합니다. 신규 또는 기존 볼륨 그룹에 대한 고객 관리형 키를 구성하기 전에 사용하려는 방법을 결정합니다.
키 회전에 대한 자세한 내용은 키 버전 업데이트를 참조하세요.
Important
키 또는 키 버전을 수정하면 루트 데이터 암호화 키의 보호가 변경되지만 Azure Elastic SAN 볼륨 그룹의 데이터는 항상 암호화된 상태로 유지됩니다. 데이터를 보호하기 위해 취해야 할 추가 조치는 없습니다. 키 버전을 회전해도 성능에 영향을 주지 않으며 연결된 가동 중지 시간이 없습니다.
자동 키 버전 회전
Azure Elastic SAN은 키 자격 증명 모음의 최신 키 버전을 사용하도록 암호화에 사용되는 고객 관리형 키를 자동으로 업데이트할 수 있습니다. Azure Elastic SAN은 매일 키 자격 증명 모음에서 새 키 버전을 확인합니다. 새 버전을 사용할 수 있게 되면 암호화에 자동으로 최신 버전의 키를 사용하기 시작합니다. 키를 회전하는 경우 이전 버전을 사용하지 않도록 설정할 때까지 24시간 동안 기다려야 합니다.
Important
Elastic SAN 볼륨 그룹이 키 버전을 수동으로 업데이트하도록 구성되었고 키 버전을 자동으로 업데이트하도록 변경하려는 경우 키 버전을 빈 문자열로 변경합니다. 키 버전을 수동으로 변경하는 방법에 대한 자세한 내용은 키 버전 자동으로 업데이트를 참조하세요.
수동 키 버전 회전
키 버전을 수동으로 업데이트하려면 고객 관리형 키를 사용하여 암호화를 구성할 때 특정 버전의 URI를 지정합니다. URI를 지정하면 새 버전이 키 자격 증명 모음에 만들어지면 Elastic SAN에서 키 버전을 자동으로 업데이트하지 않습니다. Elastic SAN에서 새 키 버전을 사용하려면 수동으로 업데이트해야 합니다.
Azure Portal에서 특정 버전의 키에 대한 URI를 찾으려면:
- 키 자격 증명 모음으로 이동합니다.
- 개체에서 키를 선택합니다.
- 원하는 키를 선택하여 해당 버전을 봅니다.
- 키 버전을 선택하여 해당 버전의 설정을 봅니다.
- URI를 제공하는 키 식별자 필드의 값을 복사합니다.
- 볼륨 그룹에 대한 암호화를 구성할 때 나중에 사용할 복사된 텍스트를 저장합니다.
키 자격 증명 모음에 대한 액세스 권한을 부여하기 위한 관리 ID 선택
Elastic SAN 볼륨 그룹에 대해 고객 관리형 암호화 키를 사용하도록 설정하는 경우 키가 포함된 키 자격 증명 모음에 대한 액세스 권한을 부여하는 데 사용되는 관리 ID를 지정해야 합니다. 관리 ID에는 다음 권한이 있어야 합니다.
- get
- wrapkey
- unwrapkey
키 자격 증명 모음에 대한 액세스 권한을 부여하는 관리 ID는 사용자가 할당한 관리 ID이거나 시스템이 할당한 관리 ID일 수 있습니다. 시스템이 할당한 관리 ID와 사용자가 할당한 관리 ID에 대해 자세히 알아보려면 관리 ID 유형을 참조하세요.
볼륨 그룹을 만들면 시스템이 할당한 ID가 자동으로 생성됩니다. 사용자 할당 ID를 사용하려면 볼륨 그룹에 대한 고객 관리형 암호화 키를 구성하기 전에 만듭니다. 사용자가 할당한 관리 ID를 만들고 관리하는 방법에 대해 자세히 알아보려면 사용자 할당 관리 ID 관리를 참조하세요.
사용자가 할당한 관리 ID를 사용하여 액세스 권한 부여
고객 관리형 키를 새 볼륨 그룹에 사용하도록 설정하는 경우 사용자가 할당한 관리 ID를 지정해야 합니다. 기존 볼륨 그룹은 사용자가 할당한 관리 ID 또는 시스템이 할당한 관리 ID를 사용하여 고객 관리형 키를 구성하도록 지원합니다.
사용자가 할당한 관리 ID를 사용하여 고객 관리형 키를 구성하는 경우 사용자가 할당한 관리 ID를 사용하여 키가 포함된 키 자격 증명 모음에 대한 액세스 권한을 부여합니다. 고객 관리형 키를 구성하기 전에 사용자 할당 ID를 만들어야 합니다.
사용자 할당 관리 ID는 독립 실행형 Azure 리소스입니다. 사용자가 할당한 관리 ID에 대한 자세한 내용은 관리 ID 유형을 참조하세요. 사용자가 할당한 관리 ID를 만들고 관리하는 방법에 대해 자세히 알아보려면 사용자 할당 관리 ID 관리를 참조하세요.
사용자가 할당한 관리 ID에는 키 자격 증명 모음의 키에 액세스할 수 있는 권한이 있어야 합니다. ID에 대한 권한을 수동으로 부여하거나 키 자격 증명 모음 범위가 있는 기본 제공 역할을 할당하여 이러한 권한을 부여할 수 있습니다.
아래 예제는 다음과 같은 작업의 방법을 보여 줍니다.
- 새 사용자 할당 관리 ID를 만듭니다.
- 사용자 할당 ID 만들기가 완료되기를 기다립니다.
- 새 ID에서
PrincipalId
를 가져옵니다. - 키 자격 증명 모음으로 범위가 지정된 새 ID에 RBAC 역할을 할당합니다.
이 문서에서 이전에 정의한 것과 동일한 변수를 사용합니다.
# Create a new user-assigned managed identity.
$UserIdentity = New-AzUserAssignedIdentity -ResourceGroupName $RgName -Name $ManagedUserName -Location $Location
팁
계속하기 전에 사용자 할당 ID 만들기가 완료되기까지 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
시스템이 할당한 관리 ID를 사용하여 액세스 권한 부여
시스템이 할당한 관리 ID는 Azure Elastic SAN 볼륨 그룹과 같은 Azure 서비스의 인스턴스와 연결됩니다.
시스템이 할당한 관리 ID에는 키 자격 증명 모음의 키에 액세스할 수 있는 권한이 있어야 합니다. 이 문서에서는 Key Vault 암호화 서비스 암호화 사용자 역할을 키 자격 증명 모음 범위가 있는 시스템이 할당한 관리 ID에 사용하여 이러한 권한을 부여합니다.
볼륨 그룹을 만들 때 New-AzElasticSanVolumeGroup
명령을 사용하여 -IdentityType "SystemAssigned"
매개 변수를 지정하면 시스템이 할당한 ID가 자동으로 만들어집니다. 볼륨 그룹을 만든 후에는 시스템이 할당한 ID를 사용할 수 없습니다. 키 자격 증명 모음의 암호화 키에 액세스하려면 먼저 Key Vault 암호화 서비스 암호화 사용자 역할과 같은 적절한 역할을 ID에 할당해야 합니다. 따라서 볼륨 그룹을 만드는 동안 시스템이 할당한 ID를 사용하도록 고객 관리형 키를 구성할 수 없습니다. 고객 관리형 키를 사용하여 새 볼륨 그룹을 만들 때 볼륨 그룹을 만들 때 사용자 할당 ID를 사용해야 하며, 시스템이 할당한 ID를 만든 후에 구성할 수 있습니다.
이 샘플 코드를 사용하여 키 자격 증명 모음으로 범위가 지정된 시스템이 할당한 관리 ID에 필요한 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