暗号化スコープを使用すると、個々の BLOB またはコンテナー レベルで暗号化を管理できます。 暗号化スコープを使用すると、異なる顧客が所有する、同じストレージ アカウントに存在するデータの間にセキュリティで保護された境界を作成できます。 暗号化スコープの詳細については、Blob Storage の暗号化スコープに関する記事を参照してください。
Microsoft マネージド キーまたは Azure Key Vault または Azure Key Vault マネージド ハードウェア セキュリティ モデル (HSM) に格納されているカスタマー マネージド キーを使用して保護される暗号化スコープを作成できます。 カスタマー マネージド キーを使用して暗号化スコープを作成するには、まずキー コンテナーまたはマネージド HSM を作成し、スコープに使用するキーを追加する必要があります。 キー ボールトまたはマネージド HSM では、消去保護が有効になっている必要があります。
ストレージ アカウントとキー コンテナーは、同じテナント内、または異なるテナント内に存在できます。 どちらの場合も、ストレージ アカウントとキー コンテナーは異なるリージョンに配置できます。
暗号化スコープは、作成時に自動的に有効になります。 暗号化スコープを作成したら、BLOB の作成時に指定できます。 コンテナーを作成するときに既定の暗号化スコープを指定することもできます。これは、コンテナー内のすべての BLOB に自動的に適用されます。
暗号化スコープを構成すると、少なくとも 1 か月間 (30 日間) 課金されます。 最初の 1 か月後、暗号化スコープの料金は時間単位で日割り計算されます。 詳しくは、「暗号化スコープの課金」をご覧ください。
Azure portal で暗号化スコープを作成するには、次の手順に従います。
Azure Portal のストレージ アカウントに移動します。
[ セキュリティとネットワーク ] で [ 暗号化] を選択します。
[ 暗号化スコープ ] タブを選択します。
[ 追加 ] ボタンをクリックして、新しい暗号化スコープを追加します。
[ 暗号化スコープの作成 ] ウィンドウで、新しいスコープの名前を入力します。
必要な種類の暗号化キーのサポート ( Microsoft マネージド キー または カスタマー マネージド キー) を選択します。
-
Microsoft マネージド キーを選択した場合は、[作成] をクリックして暗号化スコープを作成します。
-
カスタマー マネージド キーを選択した場合は、サブスクリプションを選択し、この暗号化スコープに使用するキー コンテナーとキーを指定します。 目的のキー コンテナーが別のリージョンにある場合は、[ キー URI の入力 ] を選択し、キー URI を指定します。
ストレージ アカウントに対してインフラストラクチャ暗号化が有効になっている場合は、新しい暗号化スコープに対して自動的に有効になります。 それ以外の場合は、暗号化スコープのインフラストラクチャ暗号化を有効にするかどうかを選択できます。
PowerShell で暗号化スコープを作成するには、 Az.Storage PowerShell モジュールバージョン 3.4.0 以降をインストールします。
Microsoft マネージド キーによって保護された暗号化スコープを作成する
Microsoft マネージド キーによって保護される暗号化スコープを作成するには、 パラメーターを指定して -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 Encryption ユーザー ロールにマネージド 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
次に、 パラメーターを指定して -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 で消去保護を有効にする必要があります。
ストレージ アカウントに対してテナント間のカスタマー マネージド キーを構成したら、1 つのテナントのストレージ アカウントに暗号化スコープを作成し、もう一方のテナントのキー コンテナー内のキーにスコープを設定できます。 テナント間暗号化スコープを作成するには、キー 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 Encryption ユーザー ロールにマネージド 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
次に、 パラメーターを指定して --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 で消去保護を有効にする必要があります。
ストレージ アカウントに対してテナント間のカスタマー マネージド キーを構成したら、1 つのテナントのストレージ アカウントに暗号化スコープを作成し、もう一方のテナントのキー コンテナー内のキーにスコープを設定できます。 テナント間暗号化スコープを作成するには、キー 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 で既定のスコープを使用するように構成されていない限り、個々の BLOB を独自の暗号化スコープで作成できます。 詳細については、「 コンテナーと 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 が既定のスコープをオーバーライドできないようにコンテナーが構成されている場合、操作は失敗し、要求がコンテナー暗号化ポリシーによって禁止されていることを示すメッセージが表示されます。
Azure portal でスコープを保護するキーを変更するには、次の手順に従います。
- [ 暗号化スコープ ] タブに移動して、ストレージ アカウントの暗号化スコープの一覧を表示します。
- 変更するスコープの横にある [ その他 ] ボタンを選択します。
- [ 暗号化スコープの編集 ] ウィンドウでは、暗号化の種類を Microsoft マネージド キーからカスタマー マネージド キーに、またはその逆に変更できます。
- 新しいカスタマー マネージド キーを選択するには、[ 新しいキーを使用 する] を選択し、キー コンテナー、キー、およびキーのバージョンを指定します。
暗号化スコープを保護するキーをカスタマー マネージド キーから Microsoft マネージド キーに PowerShell で変更するには、 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>