암호화 범위를 사용하면 개별 Blob 또는 컨테이너 수준에서 암호화를 관리할 수 있습니다. 암호화 범위를 사용하여 같은 스토리지 계정에 있지만 다른 고객에 속한 데이터 간에 보안 경계를 만들 수 있습니다. 암호화 범위에 대한 자세한 내용은 BLOB 스토리지의 암호화 범위를 참조하십시오.
이 문서에서는 암호화 범위를 만드는 방법을 보여줍니다. 또한 Blob 또는 컨테이너를 만들 때 암호화 범위를 지정하는 방법도 보여줍니다.
Microsoft 관리형 키 또는 Azure Key Vault 또는 Azure Key Vault HSM(Managed Hardware Security Model)에 저장된 고객 관리형 키로 보호되는 암호화 범위를 만들 수 있습니다. 고객 관리형 키를 사용하여 암호화 범위를 만들려면 먼저 키 자격 증명 모음 또는 관리형 HSM을 만들고 범위에 사용하려는 키를 추가해야 합니다. 키 저장소 또는 관리되는 HSM에는 삭제 방지가 활성화되어 있어야 합니다.
스토리지 계정과 키 보관소는 동일 테넌트에 있을 수도 있고 다른 테넌트에 있을 수도 있습니다. 두 경우 모두 스토리지 계정 및 키 자격 증명 저장소는 서로 다른 지역에 있을 수 있습니다.
암호화 범위는 만들 때 자동으로 사용하도록 설정됩니다. 암호화 범위를 만든 후 Blob을 만들 때 지정할 수 있습니다. 컨테이너를 만들 때 컨테이너의 모든 Blob에 자동으로 적용되는 기본 암호화 범위를 지정할 수도 있습니다.
암호화 범위를 구성하면 최소 1개월(30일) 동안 요금이 청구됩니다. 첫 달 이후에는 암호화 범위에 대한 요금이 시간 단위로 비례 배분됩니다. 자세한 내용은 암호화 범위에 대한 청구 방법을 확인하세요.
Azure Portal에서 암호화 범위를 만들려면 다음 단계를 수행합니다.
Azure Portal의 스토리지 계정으로 이동합니다.
보안 + 네트워킹에서 암호화를 선택합니다.
암호화 범위 탭을 선택합니다.
추가 단추를 클릭하여 새 암호화 범위를 추가합니다.
암호화 범위 만들기 창에서 새 범위의 이름을 입력합니다.
원하는 유형의 암호화 키 지원( Microsoft 관리형 키 또는 고객 관리형 키)을 선택합니다.
-
Microsoft 관리형 키를 선택한 경우 만들기를 클릭하여 암호화 범위를 만듭니다.
-
고객 관리형 키를 선택한 경우 구독을 선택하고 이 암호화 범위에 사용할 키 자격 증명 모음과 키를 지정합니다. 원하는 키 자격 증명 모음이 다른 지역에 있는 경우 키 URI 입력 을 선택하고 키 URI를 지정합니다.
스토리지 계정에 대해 인프라 암호화를 사용하도록 설정하면 새 암호화 범위에 대해 자동으로 사용하도록 설정됩니다. 그렇지 않으면 암호화 범위에 인프라 암호화를 사용할지 여부를 선택할 수 있습니다.
PowerShell을 사용하여 암호화 범위를 만들려면 Az.Storage PowerShell 모듈 버전 3.4.0 이상을 설치합니다.
Microsoft 관리형 키로 보호되는 암호화 범위 만들기
Microsoft 관리형 키로 보호되는 암호화 범위를 만들려면 매개 변수를 사용하여 New-AzStorageEncryptionScope 명령을 -StorageEncryption
호출합니다.
스토리지 계정에 대해 인프라 암호화를 사용하도록 설정하면 새 암호화 범위에 대해 자동으로 사용하도록 설정됩니다. 그렇지 않으면 암호화 범위에 인프라 암호화를 사용할지 여부를 선택할 수 있습니다. 인프라 암호화를 사용하도록 설정된 새 범위를 만들려면 매개 변수를 -RequireInfrastructureEncryption
포함합니다.
예제의 자리 표시자 값을 사용자 고유의 값으로 바꾸세요.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$scopeName = "<encryption-scope>"
New-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName1 `
-StorageEncryption
동일한 테넌트에서 고객 관리형 키로 보호되는 암호화 범위 만들기
스토리지 계정과 동일한 테넌트에 있는 키 자격 증명 모음 또는 관리형 HSM에 저장된 고객 관리형 키로 보호되는 암호화 범위를 만들려면 먼저 스토리지 계정에 대해 고객 관리형 키를 구성합니다. 키 자격 증명 모음에 액세스할 수 있는 권한이 있는 스토리지 계정에 관리 ID를 할당해야 합니다. 관리 ID는 사용자 할당 관리 ID 또는 시스템 할당 관리 ID일 수 있습니다. 고객 관리형 키를 구성하는 방법에 대한 자세한 내용은 기존 스토리지 계정에 대해 동일한 테넌트에서 고객 관리형 키 구성을 참조하세요.
키 자격 증명 모음에 액세스할 수 있는 관리 ID 권한을 부여하려면 Key Vault Crypto Service 암호화 사용자 역할을 관리 ID에 할당합니다.
암호화 범위에서 사용할 고객 관리형 키를 구성하려면 키 자격 증명 모음 또는 관리형 HSM에서 제거 보호를 사용하도록 설정해야 합니다.
다음 예제에서는 시스템 할당 관리 ID를 사용하여 암호화 범위를 구성하는 방법을 보여줍니다. 예제의 자리 표시자 값을 사용자 고유의 값으로 바꾸세요.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$keyVaultName = "<key-vault>"
$scopeName = "<encryption-scope>"
# Assign a system-assigned managed identity to the storage account.
$storageAccount = Set-AzStorageAccount -ResourceGroupName $rgName `
-Name $accountName `
-AssignIdentity
# Assign the necessary permissions to the managed identity
# so that it can access the key vault.
$principalId = $storageAccount.Identity.PrincipalId
$keyVault = Get-AzKeyVault $keyVaultName
New-AzRoleAssignment -ObjectId $storageAccount.Identity.PrincipalId `
-RoleDefinitionName "Key Vault Crypto Service Encryption User" `
-Scope $keyVault.ResourceId
다음으로, 매개 변수를 사용하여 New-AzStorageEncryptionScope 명령을 -KeyvaultEncryption
호출하고 키 URI를 지정합니다. 키 URI에 키 버전을 포함하는 것은 선택 사항입니다. 키 버전을 생략하면 암호화 범위에서 최신 키 버전을 자동으로 사용합니다. 키 버전을 포함하는 경우 다른 버전을 사용하도록 키 버전을 수동으로 업데이트해야 합니다.
키 URI의 형식은 다음 예제와 유사하며 키 자격 증명 모음의 VaultUri 속성 및 키 이름에서 생성할 수 있습니다.
# Without the key version
https://<key-vault>.vault.azure.net/keys/<key>
# With the key version
https://<key-vault>.vault.azure.net/keys/<key>/<version>
스토리지 계정에 대해 인프라 암호화를 사용하도록 설정하면 새 암호화 범위에 대해 자동으로 사용하도록 설정됩니다. 그렇지 않으면 암호화 범위에 인프라 암호화를 사용할지 여부를 선택할 수 있습니다. 인프라 암호화를 사용하도록 설정된 새 범위를 만들려면 매개 변수를 -RequireInfrastructureEncryption
포함합니다.
예제의 자리 표시자 값을 사용자 고유의 값으로 바꾸세요.
$keyUri = $keyVault.VaultUri + "keys/" + $keyName
New-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName `
-KeyUri $keyUri `
-KeyvaultEncryption
다른 테넌트에서 고객 관리형 키로 보호되는 암호화 범위 만들기
스토리지 계정과 다른 테넌트에 있는 키 자격 증명 모음 또는 관리형 HSM에 저장된 고객 관리형 키로 보호되는 암호화 범위를 만들려면 먼저 스토리지 계정에 대한 고객 관리형 키를 구성합니다. 다른 테넌트에서 키 자격 증명 모음에 액세스할 수 있는 권한이 있는 스토리지 계정에 대해 사용자 할당 관리 ID를 구성해야 합니다. 테넌트 간 고객 관리형 키를 구성하는 방법에 대한 자세한 내용은 기존 스토리지 계정에 대한 테넌트 간 고객 관리형 키 구성을 참조하세요.
암호화 범위에서 사용할 고객 관리형 키를 구성하려면 키 자격 증명 모음 또는 관리형 HSM에서 제거 보호를 사용하도록 설정해야 합니다.
스토리지 계정에 대해 테넌트 간 고객 관리형 키를 구성한 후, 한 테넌트의 스토리지 계정에서 다른 테넌트의 키 자격 증명 모음에 있는 키로 범위가 지정된 암호화 범위를 만들 수 있습니다. 테넌트 간 암호화 범위를 만들려면 키 URI가 필요합니다.
예제의 자리 표시자 값을 사용자 고유의 값으로 바꾸세요.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$scopeName = "<encryption-scope>"
# Construct the key URI from the key vault URI and key name.
$keyUri = $kvUri + "keys/" + $keyName
New-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName `
-KeyUri $keyUri `
-KeyvaultEncryption
Azure CLI를 사용하여 암호화 범위를 만들려면 먼저 Azure CLI 버전 2.20.0 이상을 설치합니다.
Microsoft 관리형 키로 보호되는 암호화 범위 만들기
Microsoft 관리형 키로 보호되는 암호화 범위를 만들려면 az storage account encryption-scope create 명령을 호출하고 매개 변수를 다음과 같이 --key-source
지정합니다Microsoft.Storage
.
스토리지 계정에 대해 인프라 암호화를 사용하도록 설정하면 새 암호화 범위에 대해 자동으로 사용하도록 설정됩니다. 그렇지 않으면 암호화 범위에 인프라 암호화를 사용할지 여부를 선택할 수 있습니다. 인프라 암호화를 사용하도록 설정된 새 범위를 만들려면 매개 변수를 --require-infrastructure-encryption
포함하고 해당 값을 true
.로 설정합니다.
자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
az storage account encryption-scope create \
--resource-group <resource-group> \
--account-name <storage-account> \
--name <encryption-scope> \
--key-source Microsoft.Storage
동일한 테넌트에서 고객 관리형 키로 보호되는 암호화 범위 만들기
스토리지 계정과 동일한 테넌트에 있는 키 자격 증명 모음 또는 관리형 HSM에 저장된 고객 관리형 키로 보호되는 암호화 범위를 만들려면 먼저 스토리지 계정에 대해 고객 관리형 키를 구성합니다. 키 자격 증명 모음에 액세스할 수 있는 권한이 있는 스토리지 계정에 관리 ID를 할당해야 합니다. 관리 ID는 사용자 할당 관리 ID 또는 시스템 할당 관리 ID일 수 있습니다. 고객 관리형 키를 구성하는 방법에 대한 자세한 내용은 기존 스토리지 계정에 대해 동일한 테넌트에서 고객 관리형 키 구성을 참조하세요.
키 자격 증명 모음에 액세스할 수 있는 관리 ID 권한을 부여하려면 Key Vault Crypto Service 암호화 사용자 역할을 관리 ID에 할당합니다.
암호화 범위에서 사용할 고객 관리형 키를 구성하려면 키 자격 증명 모음 또는 관리형 HSM에서 제거 보호를 사용하도록 설정해야 합니다.
다음 예제에서는 시스템 할당 관리 ID를 사용하여 암호화 범위를 구성하는 방법을 보여줍니다. 예제의 자리 표시자 값을 사용자 고유의 값으로 바꾸세요.
az storage account update \
--name <storage-account> \
--resource-group <resource_group> \
--assign-identity
principalId=$(az storage account show --name <storage-account> \
--resource-group <resource_group> \
--query identity.principalId \
--output tsv)
$kvResourceId=$(az keyvault show \
--resource-group <resource-group> \
--name <key-vault> \
--query id \
--output tsv)
az role assignment create --assignee-object-id $principalId \
--role "Key Vault Crypto Service Encryption User" \
--scope $kvResourceId
다음으로, 매개 변수를 사용하여 az storage account encryption-scope 명령을 --key-uri
호출하고 키 URI를 지정합니다. 키 URI에 키 버전을 포함하는 것은 선택 사항입니다. 키 버전을 생략하면 암호화 범위에서 최신 키 버전을 자동으로 사용합니다. 키 버전을 포함하는 경우 다른 버전을 사용하도록 키 버전을 수동으로 업데이트해야 합니다.
키 URI의 형식은 다음 예제와 유사하며 키 자격 증명 모음의 vaultUri 속성 및 키 이름에서 생성할 수 있습니다.
# Without the key version
https://<key-vault>.vault.azure.net/keys/<key>
# With the key version
https://<key-vault>.vault.azure.net/keys/<key>/<version>
스토리지 계정에 대해 인프라 암호화를 사용하도록 설정하면 새 암호화 범위에 대해 자동으로 사용하도록 설정됩니다. 그렇지 않으면 암호화 범위에 인프라 암호화를 사용할지 여부를 선택할 수 있습니다. 인프라 암호화를 사용하도록 설정된 새 범위를 만들려면 매개 변수를 --require-infrastructure-encryption
포함하고 해당 값을 true
.로 설정합니다.
예제의 자리 표시자 값을 사용자 고유의 값으로 바꾸세요.
az storage account encryption-scope create \
--resource-group <resource-group> \
--account-name <storage-account> \
--name <encryption-scope> \
--key-source Microsoft.KeyVault \
--key-uri <key-uri>
다른 테넌트에서 고객 관리형 키로 보호되는 암호화 범위 만들기
스토리지 계정과 다른 테넌트에 있는 키 자격 증명 모음 또는 관리형 HSM에 저장된 고객 관리형 키로 보호되는 암호화 범위를 만들려면 먼저 스토리지 계정에 대한 고객 관리형 키를 구성합니다. 다른 테넌트에서 키 자격 증명 모음에 액세스할 수 있는 권한이 있는 스토리지 계정에 대해 사용자 할당 관리 ID를 구성해야 합니다. 테넌트 간 고객 관리형 키를 구성하는 방법에 대한 자세한 내용은 기존 스토리지 계정에 대한 테넌트 간 고객 관리형 키 구성을 참조하세요.
암호화 범위에서 사용할 고객 관리형 키를 구성하려면 키 자격 증명 모음 또는 관리형 HSM에서 제거 보호를 사용하도록 설정해야 합니다.
스토리지 계정에 대해 테넌트 간 고객 관리형 키를 구성한 후, 한 테넌트의 스토리지 계정에서 다른 테넌트의 키 자격 증명 모음에 있는 키로 범위가 지정된 암호화 범위를 만들 수 있습니다. 테넌트 간 암호화 범위를 만들려면 키 URI가 필요합니다.
예제의 자리 표시자 값을 사용자 고유의 값으로 바꾸세요.
az storage account encryption-scope create \
--resource-group <resource-group> \
--account-name <storage-account> \
--name <encryption-scope> \
--key-source Microsoft.KeyVault \
--key-uri <key-uri>
Azure Portal에서 스토리지 계정에 대한 암호화 범위를 보려면 스토리지 계정에 대한 암호화 범위 설정으로 이동합니다. 이 창에서 암호화 범위를 사용하거나 사용하지 않도록 설정하거나 암호화 범위에 대한 키를 변경할 수 있습니다.
키 URI 및 버전 및 키 버전이 자동으로 업데이트되는지 여부를 포함하여 고객 관리형 키에 대한 세부 정보를 보려면 키 열의 링크를 따릅니다.
PowerShell을 사용하여 스토리지 계정에 사용할 수 있는 암호화 범위를 나열하려면 Get-AzStorageEncryptionScope 명령을 호출합니다. 예제의 자리 표시자 값을 사용자 고유의 값으로 바꾸세요.
Get-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName
스토리지 계정으로 리소스 그룹의 모든 암호화 범위를 나열하려면 파이프라인 구문을 사용합니다.
Get-AzStorageAccount -ResourceGroupName $rgName | Get-AzStorageEncryptionScope
Azure CLI를 사용하여 스토리지 계정에 사용할 수 있는 암호화 범위를 나열하려면 az storage account encryption-scope list 명령을 호출합니다. 예제의 자리 표시자 값을 사용자 고유의 값으로 바꾸세요.
az storage account encryption-scope list \
--account-name <storage-account> \
--resource-group <resource-group>
컨테이너를 만들 때 기본 암호화 범위를 지정할 수 있습니다. 해당 컨테이너의 Blob은 기본적으로 해당 범위를 사용합니다.
Azure Portal에서 기본 암호화 범위가 있는 컨테이너를 만들려면 먼저 암호화 범위 만들기에 설명된 대로 암호화 범위를 만듭니다. 다음으로, 다음 단계에 따라 컨테이너를 만듭니다.
스토리지 계정의 컨테이너 목록으로 이동하고 추가 단추를 선택하여 컨테이너를 만듭니다.
새 컨테이너 창에서 고급 설정을 확장합니다.
암호화 범위 드롭다운에서 컨테이너의 기본 암호화 범위를 선택합니다.
컨테이너의 모든 Blob에서 기본 암호화 범위를 사용하도록 요구하려면 컨테이너의 모든 Blob에 대해 이 암호화 범위를 사용하도록 확인란을 선택합니다. 이 확인란을 선택하면 컨테이너의 개별 Blob에서 기본 암호화 범위를 재정의할 수 없습니다.
PowerShell을 사용하여 기본 암호화 범위가 있는 컨테이너를 만들려면 New-AzStorageContainer 명령을 호출하고 매개 변수의 -DefaultEncryptionScope
범위를 지정합니다. 컨테이너의 모든 Blob에서 컨테이너의 기본 범위를 사용하도록 하려면 매개 변수-PreventEncryptionScopeOverride
를 true
.로 설정합니다.
$containerName1 = "container1"
$ctx = New-AzStorageContext -StorageAccountName $accountName -UseConnectedAccount
# Create a container with a default encryption scope that cannot be overridden.
New-AzStorageContainer -Name $containerName1 `
-Context $ctx `
-DefaultEncryptionScope $scopeName1 `
-PreventEncryptionScopeOverride $true
Azure CLI를 사용하여 기본 암호화 범위가 있는 컨테이너를 만들려면 az storage container create 명령을 호출하고 매개 변수의 범위를 --default-encryption-scope
지정합니다. 컨테이너의 모든 Blob에서 컨테이너의 기본 범위를 사용하도록 하려면 매개 변수--prevent-encryption-scope-override
를 true
.로 설정합니다.
다음 예제에서는 Microsoft Entra 계정을 사용하여 컨테이너를 만드는 작업에 권한을 부여합니다. 계정 액세스 키를 사용할 수도 있습니다. 자세한 내용은 Azure CLI를 사용하여 Blob 또는 큐 데이터에 대한 액세스 권한 부여를 참조하세요.
az storage container create \
--account-name <storage-account> \
--resource-group <resource-group> \
--name <container> \
--default-encryption-scope <encryption-scope> \
--prevent-encryption-scope-override true \
--auth-mode login
클라이언트가 기본 암호화 범위가 있는 컨테이너에 Blob을 업로드할 때 범위를 지정하려고 하고 컨테이너가 Blob이 기본 범위를 재정의하지 못하도록 구성된 경우 컨테이너 암호화 정책에서 요청이 금지되었음을 나타내는 메시지와 함께 작업이 실패합니다.
Blob을 업로드할 때 해당 Blob에 대한 암호화 범위를 지정하거나 지정된 경우 컨테이너에 대한 기본 암호화 범위를 사용할 수 있습니다.
Azure Portal에서 범위를 보호하는 키를 변경하려면 다음 단계를 수행합니다.
-
암호화 범위 탭으로 이동하여 스토리지 계정의 암호화 범위 목록을 봅니다.
- 수정하려는 범위 옆에 있는 자세히 단추를 선택합니다.
-
암호화 범위 편집 창에서 암호화 유형을 Microsoft 관리형 키에서 고객 관리형 키로 변경하거나 그 반대로 변경할 수 있습니다.
- 새 고객 관리형 키를 선택하려면 새 키 사용을 선택하고 키 자격 증명 모음, 키 및 키 버전을 지정합니다.
PowerShell을 사용하여 고객 관리형 키에서 Microsoft 관리형 키로 암호화 범위를 보호하는 키를 변경하려면 Update-AzStorageEncryptionScope 명령을 호출하고 매개 변수를 -StorageEncryption
전달합니다.
Update-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName2 `
-StorageEncryption
다음으로 Update-AzStorageEncryptionScope 명령을 호출하고 -KeyUri
및 -KeyvaultEncryption
매개 변수를 전달합니다.
Update-AzStorageEncryptionScope -ResourceGroupName $rgName `
-StorageAccountName $accountName `
-EncryptionScopeName $scopeName1 `
-KeyUri $keyUri `
-KeyvaultEncryption
고객 관리형 키에서 Azure CLI를 사용하여 Microsoft 관리형 키로 암호화 범위를 보호하는 키를 변경하려면 az storage account encryption-scope update 명령을 호출하고 다음 값을 --key-source
사용하여 매개 변수를 전달 Microsoft.Storage
합니다.
az storage account encryption-scope update \
--account-name <storage-account> \
--resource-group <resource-group>
--name <encryption-scope> \
--key-source Microsoft.Storage
다음으로, az storage account encryption-scope update 명령을 호출합니다. --key-uri
매개 변수를 전달하고, 값 --key-source
와 함께 Microsoft.KeyVault
매개 변수를 전달합니다.
az storage account encryption-scope update \
--resource-group <resource-group> \
--account-name <storage-account> \
--name <encryption-scope> \
--key-source Microsoft.KeyVault \
--key-uri <key-uri>