Azure Storage는 미사용 스토리지 계정의 모든 데이터를 암호화합니다. 기본적으로 데이터는 Microsoft 관리형 키로 암호화됩니다. 암호화 키를 더 효과적으로 제어하기 위해 사용자 고유의 키를 관리할 수 있습니다. 고객 관리형 키는 Azure Key Vault 또는 Key Vault 관리형 HSM(하드웨어 보안 모델)에 저장되어 있어야 합니다.
이 문서에서는 스토리지 계정과 키 자격 증명이 동일한 테넌트에 있을 때 기존 스토리지 계정에 대한 고객 관리형 키를 사용해 암호화를 구성하는 방법을 보여 줍니다. 고객 관리형 키는 키 자격 증명 모음에 저장됩니다.
Azure Key Vault 및 Azure Key Vault 관리되는 HSM은 고객 관리형 키 구성 시 동일한 API 및 관리 인터페이스를 지원합니다. Azure Key Vault에 지원되는 모든 작업은 Azure Key Vault 관리되는 HSM에도 지원됩니다.
키 자격 증명 모음 구성
신규 또는 기존 키 자격 증명 모음을 사용하여 고객 관리형 키를 저장할 수 있습니다. 스토리지 계정 및 키 자격 증명 모음은 동일한 테넌트의 다른 지역 또는 구독에 있을 수 있습니다. Azure Key Vault에 대한 자세한 내용을 보려면 Azure Key Vault 개요 및 Azure Key Vault란?을 참조하세요.
Azure Storage 암호화에서 고객 관리형 키를 사용하려면 키 자격 증명 모음에 대해 일시 삭제 및 제거 보호를 모두 사용하도록 설정해야 합니다. 일시 삭제는 새 키 자격 증명 모음을 만들 때 기본적으로 사용하도록 설정되며 해제할 수 없습니다. 키 자격 증명 모음을 만들 때 또는 만든 후에 제거 보호를 사용하도록 설정할 수 있습니다.
PowerShell을 사용하여 새 키 자격 증명 모음을 만들려면 버전 2.0.0 이상의 Az.KeyVault PowerShell 모듈을 설치합니다. 그런 다음 New-AzKeyVault를 호출하여 새 키 자격 증명 모음을 만듭니다. Az.KeyVault 모듈의 2.0.0 이상 버전을 사용하는 경우 새 키 자격 증명 모음을 만들 때 일시 삭제가 기본적으로 사용하도록 설정됩니다.
다음 예에서는 일시 삭제 및 제거 보호가 사용하도록 설정된 새 키 자격 증명 모음을 만듭니다. 키 자격 증명 모음의 권한 모델은 Azure RBAC를 사용하도록 설정됩니다. 대괄호의 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
Azure CLI를 사용하여 새 키 자격 증명 모음을 만들려면 az keyvault create를 호출합니다. 다음 예에서는 일시 삭제 및 제거 보호가 사용하도록 설정된 새 키 자격 증명 모음을 만듭니다. 키 자격 증명 모음의 권한 모델은 Azure RBAC를 사용하도록 설정됩니다. 대괄호의 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
사용자가 할당한 관리 ID로 고객 관리형 키를 구성하려면 먼저 Key Vault 암호화 서비스 암호화 사용자 역할을 키 자격 증명 모음으로 범위가 할당된 사용자가 할당한 관리 ID에 할당해야 합니다. 이 역할은 키 자격 증명 모음의 키에 액세스할 수 있는 사용자가 할당한 관리 ID 권한을 부여합니다. Azure Portal에서 Azure RBAC 역할 할당에 대한 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.
Azure Portal을 사용하여 고객 관리형 키를 구성하는 경우 포털 사용자 인터페이스를 통해 기존 사용자 할당 ID를 선택할 수 있습니다.
다음 예에서는 사용자가 할당한 관리 ID를 검색하고 여기에 키 자격 증명 모음으로 범위가 할당된 필수 RBAC 역할을 할당하는 방법을 보여 줍니다. 대괄호 안의 자리 표시자 값을 사용자 고유의 값으로 바꾸고 위의 예에 정의된 변수를 사용해야 합니다.
다음 예에서는 사용자가 할당한 관리 ID를 검색하고 여기에 키 자격 증명 모음으로 범위가 할당된 필수 RBAC 역할을 할당하는 방법을 보여 줍니다. 대괄호 안의 자리 표시자 값을 사용자 고유의 값으로 바꾸고 위의 예에 정의된 변수를 사용해야 합니다.
identityResourceId=$(az identity show --name <user-assigned-identity> \
--resource-group $rgName \
--query id \
--output tsv)
principalId=$(az identity show --name <user-assigned-identity> \
--resource-group $rgName \
--query principalId \
--output tsv)
az role assignment create --assignee-object-id $principalId \
--role "Key Vault Crypto Service Encryption User" \
--scope $kvResourceId \
--assignee-principal-type ServicePrincipal
시스템이 할당한 관리 ID를 사용하여 액세스 권한 부여
시스템이 할당한 관리 ID는 Azure 서비스 인스턴스와 연결됩니다(이 경우 Azure Storage 계정). 시스템이 할당한 관리 ID를 사용하여 고객 관리형 키가 포함된 키 자격 증명 모음에 대한 액세스 권한을 부여하려면 먼저 스토리지 계정에 시스템이 할당한 관리 ID를 명시적으로 할당해야 합니다.
기존 스토리지 계정만 시스템 할당 ID를 사용하여 키 자격 증명 모음에 대한 액세스 권한을 부여할 수 있습니다. 계정 생성 시 고객 관리형 키를 구성한 경우 새 스토리지 계정은 사용자 할당 ID를 사용해야 합니다.
시스템이 할당한 관리 ID에는 키 자격 증명 모음의 키에 액세스할 수 있는 권한이 있어야 합니다. Key Vault 암호화 서비스 암호화 사용자 역할을 키 자격 증명 모음 범위가 있는 시스템이 할당한 관리 ID에 할당하여 이러한 권한을 부여합니다.
시스템이 할당한 관리 ID로 고객 관리형 키를 구성하려면 먼저 Key Vault 암호화 서비스 암호화 사용자 역할을 키 자격 증명 모음으로 범위가 할당된 시스템이 할당한 관리 ID에 할당해야 합니다. 이 역할은 키 자격 증명 모음의 키에 액세스할 수 있는 시스템이 할당한 관리 ID 권한을 부여합니다. Azure Portal에서 Azure RBAC 역할 할당에 대한 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.
시스템이 할당한 관리 ID를 사용하여 Azure Portal에서 고객 관리형 키를 구성하면 시스템이 할당한 관리 ID가 내부적으로 스토리지 계정에 할당됩니다.
그런 다음, 키 자격 증명 모음으로 범위가 지정된 필수 RBAC 역할을 시스템이 할당한 관리 ID에 할당합니다. 대괄호 안의 자리 표시자 값을 사용자 고유의 값으로 바꾸고 위의 예에 정의된 변수를 사용해야 합니다.
principalId=$(az storage account show --name $accountName \
--resource-group $rgName \
--query identity.principalId \
--output tsv)
az role assignment create --assignee-object-id $principalId \
--role "Key Vault Crypto Service Encryption User" \
--scope $kvResourceId
기존 계정에 대해 고객 관리형 키 구성
기존 스토리지 계정에 대해 고객 관리형 키를 사용하여 암호화를 구성하는 경우 연결된 키 자격 증명 모음에서 새 버전을 사용할 수 있을 때마다 Azure Storage 암호화에 사용되는 키 버전을 자동으로 업데이트하도록 선택할 수 있습니다. 또는, 키 버전이 수동으로 업데이트될 때까지 암호화에 사용할 키 버전을 명시적으로 지정할 수 있습니다.
키 버전이 자동으로든, 수동으로든 변경되면 루트 암호화 키의 보호 상태가 변경되지만 Azure Storage 계정의 데이터는 항상 암호화된 상태로 유지됩니다. 데이터가 보호되도록 하기 위해 추가 작업이 필요하지 않습니다. 키 버전을 순환해도 성능에는 영향이 없습니다. 키 버전 회전과 관련된 가동 중지 시간은 없습니다.
기존 스토리지 계정에 대해 고객 관리형 키를 구성할 경우 시스템이 할당한 관리 ID 또는 사용자가 할당한 관리 ID를 사용하여 키 자격 증명 모음에 대한 액세스 권한을 부여할 수 있습니다.
참고 항목
키를 회전하려면 Azure Key Vault에서 새 버전의 키를 만듭니다. Azure Storage는 키 회전을 처리하지 않으므로 키 자격 증명 모음에서 키 회전을 관리해야 합니다. Azure Key Vault에서 키 자동 회전을 구성하거나 키를 수동으로 회전할 수 있습니다.
암호화에서 키 버전 자동 업데이트 구성
Azure Storage는 키 자격 증명 모음의 최신 키 버전을 사용하도록 암호화에 사용되는 고객 관리형 키를 자동으로 업데이트할 수 있습니다. Azure Storage는 매일 키 자격 증명 모음에서 새 키 버전을 확인합니다. 새 버전을 사용할 수 있게 되면 Azure Storage에서 자동으로 최신 버전의 암호화 키를 사용하기 시작합니다.
Important
Azure Storage는 키 자격 증명 모음에서 새 키 버전을 매일 한 번만 확인합니다. 키를 회전하는 경우 이전 버전을 사용하지 않도록 설정할 때까지 24시간 동안 기다려야 합니다.
Azure Portal에서 키 버전 자동 업데이트를 사용하여 기존 계정에 대한 고객 관리형 키를 구성하려면 아래 단계를 수행합니다.
본인의 저장소 계정으로 이동합니다.
보안 + 네트워킹에서 암호화를 선택합니다. 기본적으로 키 관리는 아래 이미지와 같이 Microsoft 관리형 키로 설정됩니다.
고객 관리형 키 옵션을 선택합니다. 계정이 이전에 키 버전을 수동으로 업데이트하여 고객 관리형 키용으로 구성된 경우 페이지 하단에서 키 변경을 선택합니다.
Key Vault에서 선택 옵션을 선택합니다.
키 자격 증명 모음 및 키 선택을 선택합니다.
사용하려는 키가 포함된 키 자격 증명 모음을 선택합니다. 새 키 자격 증명 모음을 만들 수도 있습니다.
키 자격 증명 모음에서 키를 선택합니다. 새 키를 만들 수도 있습니다.
키 자격 증명 모음에 대한 액세스를 인증하는 데 사용할 ID 유형을 선택합니다. 옵션에는 시스템 할당(기본값) 또는 사용자 할당이 포함됩니다. 관리 ID의 각 유형에 대해 자세히 알아보려면 관리 ID 유형을 참조하세요.
시스템 할당을 선택하면 스토리지 계정에 대한 시스템이 할당한 관리 ID가 아직 없는 경우 사용자에게 보이지 않게 만들어집니다.
사용자 할당을 선택하면 키 자격 증명 모음에 액세스할 수 있는 권한이 있는 기존의 사용자 할당 ID를 선택해야 합니다. 사용자가 할당한 ID를 만드는 방법을 알아보려면 사용자가 할당한 관리 ID 관리를 참조하세요.
변경 내용을 저장합니다.
키를 지정하면 Azure Portal은 키 버전 자동 업데이트가 사용하도록 설정되어 있음을 나타내고 현재 암호화에 사용 중인 키 버전을 표시합니다. 또한 포털에서는 키 자격 증명 모음에 대한 액세스 권한을 부여하는 데 사용되는 관리 ID 유형과 관리 ID에 대한 주체 ID를 표시합니다.
PowerShell에서 키 버전 자동 업데이트를 사용하여 기존 계정에 대한 고객 관리형 키를 구성하려면 Az.Storage 모듈 버전 2.0.0 이상을 설치합니다.
다음으로, Set-AzStorageAccount를 호출하여 스토리지 계정의 암호화 설정을 업데이트합니다. KeyvaultEncryption 매개 변수를 포함하여 스토리지 계정에서 고객 관리형 키를 사용하도록 설정하고, KeyVersion을 빈 문자열로 설정하여 키 버전을 자동으로 업데이트할 수 있도록 합니다. 스토리지 계정이 이전에 특정 키 버전을 사용하여 고객 관리형 키용으로 구성된 경우, 키 버전을 빈 문자열로 설정하면 앞으로 키 버전을 자동으로 업데이트할 수 있습니다.
$accountName = "<storage-account>"
# Use this form of the command with a user-assigned managed identity.
Set-AzStorageAccount -ResourceGroupName $rgName `
-AccountName $accountName `
-IdentityType SystemAssignedUserAssigned `
-UserAssignedIdentityId $userIdentity.Id `
-KeyvaultEncryption `
-KeyVaultUri $keyVault.VaultUri `
-KeyName $key.Name `
-KeyVersion "" `
-KeyVaultUserAssignedIdentityId $userIdentity.Id
# Use this form of the command with a system-assigned managed identity.
Set-AzStorageAccount -ResourceGroupName $rgName `
-AccountName $accountName `
-KeyvaultEncryption `
-KeyName $key.Name `
-KeyVersion "" `
-KeyVaultUri $keyVault.VaultUri
다음으로, az storage account update를 호출하여 스토리지 계정의 암호화 설정을 업데이트합니다. --encryption-key-source 매개 변수를 포함하고 Microsoft.Keyvault로 설정하여 계정에서 고객 관리형 키를 사용하도록 설정하고, encryption-key-version을 빈 문자열로 설정하여 키 버전을 자동 업데이트할 수 있도록 합니다. 스토리지 계정이 이전에 특정 키 버전을 사용하여 고객 관리형 키용으로 구성된 경우, 키 버전을 빈 문자열로 설정하면 앞으로 키 버전을 자동으로 업데이트할 수 있습니다.
accountName="<storage-account>"
keyVaultUri=$(az keyvault show \
--name $kvName \
--resource-group $rgName \
--query properties.vaultUri \
--output tsv)
# Use this form of the command with a user-assigned managed identity.
az storage account update \
--name $accountName \
--resource-group $rgName \
--identity-type SystemAssigned,UserAssigned \
--user-identity-id $identityResourceId \
--encryption-key-name $keyName \
--encryption-key-version "" \
--encryption-key-source Microsoft.Keyvault \
--encryption-key-vault $keyVaultUri \
--key-vault-user-identity-id $identityResourceId
# Use this form of the command with a system-assigned managed identity.
az storage account update \
--name $accountName \
--resource-group $rgName \
--encryption-key-name $keyName \
--encryption-key-version "" \
--encryption-key-source Microsoft.Keyvault \
--encryption-key-vault $keyVaultUri
암호화에서 키 버전 수동 업데이트 구성
키 버전을 수동으로 업데이트하려면 암호화에서 고객 관리형 키를 구성할 때 버전을 명시적으로 지정합니다. 이 경우 Azure Storage는 자격 증명 모음에서 새 버전을 만들 때 키 버전을 자동으로 업데이트하지 않습니다. 새 키 버전을 사용하려면 Azure Storage 암호화에 사용되는 버전을 수동으로 업데이트해야 합니다.
Azure Portal에서 키 버전 수동 업데이트를 사용하도록 고객 관리형 키를 구성하려면 버전을 포함하여 키 URI를 지정합니다. 키를 URI로 지정하려면 다음 단계를 수행합니다.
Azure Portal에서 키 URI을 찾으려면 키 자격 증명 모음으로 이동하여 키 설정을 선택합니다. 원하는 키를 선택한 다음, 키를 선택하여 해당 버전을 봅니다. 키 버전을 선택하여 해당 버전의 설정을 봅니다.
URI를 제공하는 키 식별자 필드의 값을 복사합니다.
스토리지 계정에 대한 암호화 키 설정에서 키 URI 입력 옵션을 선택합니다.
복사한 URI를 키 URI 필드에 붙여넣습니다. 키 버전 자동 업데이트를 사용하도록 설정하려면 URI에서 키 버전을 생략합니다.
키 자격 증명 모음이 포함된 구독을 지정합니다.
시스템이 할당한 관리 ID 또는 사용자가 할당한 관리 ID를 지정합니다.
변경 내용을 저장합니다.
키 버전 수동 업데이트를 사용하도록 고객 관리형 키를 구성하려면 스토리지 계정의 암호화를 구성할 때 키 버전을 명시적으로 제공합니다. 다음 예제와 같이 Set-AzStorageAccount를 호출하여 스토리지 계정의 암호화 설정을 업데이트하고 -KeyvaultEncryption 옵션을 포함하여 스토리지 계정에 고객 관리형 키를 사용하도록 설정합니다.
대괄호 안의 자리 표시자 값을 사용자 고유의 값으로 바꾸고 위의 예제에 정의된 변수를 사용해야 합니다.
$accountName = "<storage-account>"
# Use this form of the command with a user-assigned managed identity.
Set-AzStorageAccount -ResourceGroupName $rgName `
-AccountName $accountName `
-IdentityType SystemAssignedUserAssigned `
-UserAssignedIdentityId $userIdentity.Id `
-KeyvaultEncryption `
-KeyVaultUri $keyVault.VaultUri `
-KeyName $key.Name `
-KeyVersion $key.Version `
-KeyVaultUserAssignedIdentityId $userIdentity.Id
# Use this form of the command with a system-assigned managed identity.
Set-AzStorageAccount -ResourceGroupName $rgName `
-AccountName $accountName `
-KeyvaultEncryption `
-KeyVaultUri $keyVault.VaultUri `
-KeyName $key.Name `
-KeyVersion $key.Version
키 버전을 수동으로 업데이트하는 경우 새 버전을 사용하도록 스토리지 계정의 암호화 설정을 업데이트해야 합니다. 먼저 Get-AzKeyVaultKey를 호출하여 최신 버전의 키를 가져옵니다. 그런 다음 이전 예제와 같이 Set-AzStorageAccount를 호출하여 새 버전의 키를 사용하도록 스토리지 계정의 암호화 설정을 업데이트합니다.
키 버전 수동 업데이트를 사용하도록 고객 관리형 키를 구성하려면 스토리지 계정의 암호화를 구성할 때 키 버전을 명시적으로 제공합니다. 다음 예제와 같이 az storage account update를 호출하여 스토리지 계정의 암호화 설정을 업데이트합니다. --encryption-key-source 매개 변수를 포함하고 이를 Microsoft.Keyvault로 설정하여 계정에서 고객 관리형 키를 사용하도록 설정합니다.
대괄호의 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
accountName="<storage-account>"
keyVaultUri=$(az keyvault show \
--name $kvName \
--resource-group $rgName \
--query properties.vaultUri \
--output tsv)
keyVersion=$(az keyvault key list-versions \
--name $keyName \
--vault-name $kvName \
--query [-1].kid \
--output tsv | cut -d '/' -f 6)
# Use this form of the command with a user-assigned managed identity
az storage account update \
--name $accountName \
--resource-group $rgName \
--identity-type SystemAssigned,UserAssigned \
--user-identity-id $identityResourceId \
--encryption-key-name $keyName \
--encryption-key-version $keyVersion \
--encryption-key-source Microsoft.Keyvault \
--encryption-key-vault $keyVaultUri \
--key-vault-user-identity-id $identityResourceId
# Use this form of the command with a system-assigned managed identity
az storage account update \
--name $accountName \
--resource-group $rgName \
--encryption-key-name $keyName \
--encryption-key-version $keyVersion \
--encryption-key-source Microsoft.Keyvault \
--encryption-key-vault $keyVaultUri
키 또는 키 버전을 변경하면 루트 암호화 키의 보호 상태가 변경되지만, Azure Storage 계정의 데이터는 항상 암호화된 상태로 유지됩니다. 데이터를 보호하기 위해 취해야 할 추가 조치는 없습니다. 키를 변경하거나 키 버전을 회전해도 성능에 영향을 주지는 않습니다. 키 변경 또는 키 버전 회전과 관련된 가동 중지 시간은 없습니다.
고객 관리형 키를 사용하는 스토리지 계정에 대한 액세스 권한을 일시적으로 철회하려면 키 자격 증명 모음에서 현재 사용되는 키를 사용하지 않도록 설정합니다. 키를 사용하지 않도록 설정했다가 다시 사용하도록 설정하는 일과 관련하여 나타나는 성능상의 영향이나 가동 중지 시간은 없습니다.
Azure Portal에서 고객 관리형 키를 사용하지 않도록 설정하려면 다음 단계를 따릅니다.
키가 포함된 키 자격 증명 모음으로 이동합니다.
개체에서 키를 선택합니다.
키를 마우스 오른쪽 단추로 클릭하고 사용 안 함을 선택합니다.
PowerShell을 사용하여 고객 관리형 키를 철회하려면 다음 예제와 같이 Update-AzKeyVaultKey 명령을 호출합니다. 대괄호 안의 자리 표시자 값을 사용자 고유의 값으로 바꿔 변수를 정의하거나, 이전 예제에서 정의한 변수를 사용해야 합니다.
$kvName = "<key-vault-name>"
$keyName = "<key-name>"
$enabled = $false
# $false to disable the key / $true to enable it
# Check the current state of the key (before and after enabling/disabling it)
Get-AzKeyVaultKey -Name $keyName -VaultName $kvName
# Disable (or enable) the key
Update-AzKeyVaultKey -VaultName $kvName -Name $keyName -Enable $enabled
Azure CLI를 사용하여 고객 관리형 키를 철회하려면 다음 예제와 같이 az keyvault key set-attributes 명령을 호출합니다. 대괄호 안의 자리 표시자 값을 사용자 고유의 값으로 바꿔 변수를 정의하거나, 이전 예제에서 정의한 변수를 사용해야 합니다.
kvName="<key-vault-name>"
keyName="<key-name>"
enabled="false"
# "false" to disable the key / "true" to enable it:
# Check the current state of the key (before and after enabling/disabling it)
az keyvault key show \
--vault-name $kvName \
--name $keyName
# Disable (or enable) the key
az keyvault key set-attributes \
--vault-name $kvName \
--name $keyName \
--enabled $enabled
Microsoft 관리형 키로 다시 전환
Azure Portal, PowerShell 또는 Azure CLI를 사용하여 언제든지 고객 관리형 키에서 Microsoft 관리형 키로 다시 전환할 수 있습니다.
Azure Portal을 통해 고객 관리형 키에서 Microsoft 관리형 키로 다시 전환하려면 다음 단계를 따릅니다.
본인의 저장소 계정으로 이동합니다.
보안 + 네트워킹에서 암호화를 선택합니다.
암호화 유형을 Microsoft 관리형 키로 변경합니다.
PowerShell을 사용하여 고객 관리형 키에서 Microsoft 관리형 키로 다시 전환하려면 다음 예제와 같이 -StorageEncryption 옵션을 사용하여 Set-AzStorageAccount 명령을 호출합니다. 대괄호 안의 자리 표시자 값을 사용자 고유의 값으로 바꾸고 위의 예제에 정의된 변수를 사용해야 합니다.
Azure CLI를 사용하여 고객 관리형 키에서 Microsoft 고객 관리형 키로 다시 전환하려면 다음 예제와 같이 az storage account update를 호출하고 --encryption-key-source parameter를 Microsoft.Storage로 설정합니다. 대괄호 안의 자리 표시자 값을 사용자 고유의 값으로 바꾸고 위의 예제에 정의된 변수를 사용해야 합니다.