暗号化スコープを使用すると、個々の BLOB またはコンテナー レベルで暗号化を管理できます。 暗号化スコープを使用すると、異なる顧客が所有する、同じストレージ アカウントに存在するデータの間にセキュリティで保護された境界を作成できます。 暗号化スコープの詳細については、Blob Storage の暗号化スコープに関する記事を参照してください。
この記事では、暗号化スコープを作成する方法について説明します。 また、BLOB またはコンテナーを作成するときに暗号化スコープを指定する方法についても説明します。
保護対象の暗号化スコープは、Microsoft マネージド キーを使用して作成することも、Azure Key Vault または Azure Key Vault Managed Hardware Security Model (HSM) に格納されているカスタマー マネージド キーを使用して作成することもできます。 カスタマー マネージド キーを使用して暗号化スコープを作成するには、まずキー コンテナーまたは Managed HSM を作成し、スコープで使用するキーを追加する必要があります。 キー コンテナーまたはマネージド HSM では、消去保護が有効になっている必要があります。
ストレージ アカウントとキー コンテナーは、同じテナント内にあっても、異なるテナント内にあってもかまいません。 いずれの場合でも、ストレージ アカウントとキー コンテナーは異なるリージョンにあってもかまいません。
暗号化スコープは、作成時に自動的に有効になります。 作成した暗号化スコープは、BLOB の作成時に指定できます。 コンテナーを作成するときに既定の暗号化スコープを指定することもできます。これは、コンテナー内のすべての BLOB に自動的に適用されます。
暗号化スコープを構成すると、少なくとも 1 か月間 (30 日間) の課金が発生します。 最初の 1 か月後、暗号化スコープの料金は 1 時間ごとに日割り計算されます。 詳しくは、「暗号化スコープの課金」をご覧ください。
Azure portal で暗号化スコープを作成するには、次の手順を実行します。
Azure Portal のストレージ アカウントに移動します。
[セキュリティとネットワーク] で、[暗号化] を選択します。
[Encryption Scopes](暗号化スコープ) タブを選択します。
[追加] ボタンをクリックして、新しい暗号化スコープを追加します。
[暗号化スコープの作成] ウィンドウで、新しいスコープの名前を入力します。
目的の暗号化キー サポートの種類として、 [Microsoft-managed keys](Microsoft マネージド キー) または [Customer-managed keys](カスタマー マネージド キー) を選択します。
- [Microsoft-managed keys](Microsoft マネージド キー) を選択した場合は、 [作成] をクリックして暗号化スコープを作成します。
- [カスタマー マネージド キー] を選択した場合は、サブスクリプションを選択し、この暗号化スコープで使用するキー コンテナーとキーを指定します。 目的のキー コンテナーが別のリージョンにある場合は、[キー URI を入力する] を選択し、キー URI を指定します。
ストレージ アカウントに対してインフラストラクチャ暗号化が有効になっている場合は、新しい暗号化スコープに対して自動的に有効になります。 そうでない場合は、暗号化スコープに対してインフラストラクチャ暗号化を有効にするかどうかを選択できます。
PowerShell を使用して暗号化スコープを作成するには、Az.Storage PowerShell モジュール バージョン 3.4.0 以降をインストールします。
Microsoft マネージド キーによって保護される暗号化スコープを作成する
Microsoft マネージド キーによって保護される暗号化スコープを作成するには、-StorageEncryption
パラメーターを指定して New-AzStorageEncryptionScope コマンドを呼び出します。
ストレージ アカウントに対してインフラストラクチャ暗号化が有効になっている場合は、新しい暗号化スコープに対して自動的に有効になります。 そうでない場合は、暗号化スコープに対してインフラストラクチャ暗号化を有効にするかどうかを選択できます。 インフラストラクチャ暗号化を有効にした新しいスコープを作成するには、-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 に付与するには、マネージド ID に Key Vault Crypto Service Encryption User ロールを割り当てます。
暗号化スコープで使用するためにカスタマー マネージド キーを構成するには、消去保護がキー コンテナーまたは Managed 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
パラメーターを使用して New-AzStorageEncryptionScope コマンドを呼び出し、キー 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 を構成する必要があります。 クロステナントのカスタマー マネージド キーを構成する方法の詳細については、「既存のストレージ アカウント用のクロステナントのカスタマー マネージド キーを構成する」を参照してください。
暗号化スコープで使用するためにカスタマー マネージド キーを構成するには、消去保護がキー コンテナーまたは Managed 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 マネージド キーによって保護される暗号化スコープを作成するには、--key-source
パラメーターを Microsoft.Storage
に指定して、az storage account encryption-scope create コマンドを呼び出します。
ストレージ アカウントに対してインフラストラクチャ暗号化が有効になっている場合は、新しい暗号化スコープに対して自動的に有効になります。 そうでない場合は、暗号化スコープに対してインフラストラクチャ暗号化を有効にするかどうかを選択できます。 インフラストラクチャ暗号化を有効にした新しいスコープを作成するには、--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 に付与するには、マネージド ID に Key Vault Crypto Service Encryption User ロールを割り当てます。
暗号化スコープで使用するためにカスタマー マネージド キーを構成するには、消去保護がキー コンテナーまたは Managed 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
パラメーターを使用して az storage account encryption-scope コマンドを呼び出し、キー 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 を構成する必要があります。 クロステナントのカスタマー マネージド キーを構成する方法の詳細については、「既存のストレージ アカウント用のクロステナントのカスタマー マネージド キーを構成する」を参照してください。
暗号化スコープで使用するためにカスタマー マネージド キーを構成するには、消去保護がキー コンテナーまたは Managed 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 でストレージ アカウントの暗号化スコープを表示するには、ストレージ アカウントの [Encryption Scopes](暗号化スコープ) 設定に移動します。 このウィンドウでは、暗号化スコープを有効または無効にしたり、暗号化スコープのキーを変更したりできます。
キーの 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 で既定の暗号化スコープを持つコンテナーを作成するには、まず、「暗号化スコープの作成」の説明に従って暗号化スコープを作成します。 次に、以下の手順に従ってコンテナーを作成します。
ストレージ アカウント内のコンテナーの一覧に移動し、[追加] ボタンをクリックしてコンテナーを作成します。
[新しいコンテナー] ウィンドウで [詳細] 設定を展開します。
[Encryption Scopes](暗号化スコープ) ドロップダウンで、コンテナーの既定の暗号化スコープを選択します。
コンテナー内のすべての BLOB で既定の暗号化スコープを使用することを要求するには、 [Use this encryption scope for all blobs in the container](コンテナー内のすべての 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 で変更するには、以下の手順を実行します。
- [Encryption Scopes](暗号化スコープ) タブに移動し、ストレージ アカウントの暗号化スコープの一覧を表示します。
- 変更するスコープの横にある [詳細] ボタンを選択します。
- [Edit encryption scope](暗号化スコープの編集) ウィンドウでは、暗号化の種類を 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 コマンドを呼び出し、Microsoft.Storage
の値で --key-source
パラメーターを渡します。
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
パラメーターを渡して、Microsoft.KeyVault
の値で --key-source
パラメーターを渡します。
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>