既存のストレージ アカウントのカスタマー マネージド キーを有効にする場合、そのキーを含むキー コンテナーへのアクセスの承認に使用するマネージド ID を指定する必要があります。 マネージド ID には、キー コンテナー内のキーにアクセスするためのアクセス許可が必要です。
キー コンテナーへのアクセスを承認するマネージド ID は、ユーザー割り当てまたはシステム割り当てのいずれかのマネージド ID になります。 システム割り当てとユーザー割り当てのマネージド ID の詳細については、「マネージド ID の種類」を参照してください。
ユーザー割り当てマネージド ID を使用してアクセスを承認する
新しいストレージ アカウントのカスタマー マネージド キーを有効にする場合は、ユーザー割り当てマネージド ID を指定する必要があります。 既存のストレージ アカウントでは、ユーザー割り当てマネージド ID またはシステム割り当てマネージド ID のいずれかを使用してカスタマー マネージド キーを構成することがサポートされています。
ユーザー割り当てマネージド ID を使用してカスタマー マネージド キーを構成する場合、ユーザー割り当てマネージド ID を使用して、キーを含むキー コンテナーへのアクセスが認可されます。 ユーザー割り当て ID はカスタマー マネージド キーを構成する前に作成する必要があります。
ユーザー割り当てマネージド ID は、スタンドアロンの Azure リソースです。 ユーザー割り当てのマネージド ID の詳細については、「マネージド ID の種類」を参照してください。 ユーザー割り当てマネージド ID を作成して管理する方法については、「ユーザー割り当てマネージド ID の管理」を参照してください。
ユーザー割り当てマネージド ID には、キー コンテナー内のキーにアクセスするためのアクセス許可が必要です。 Key Vault Crypto Service Encryption User ロールを、キー コンテナー スコープを持つユーザー割り当てマネージド ID に割り当てて、これらのアクセス許可を付与します。
次の例は、ユーザー割り当てマネージド ID を取得し、キー コンテナーにスコープ設定された必要な RBAC ロールをその ID に割り当てる方法を示しています。 角かっこ内のプレースホルダー値を独自の値に置き換え、前の例で定義した変数を使用してください。
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 Crypto Service Encryption User ロールを、キー コンテナー スコープを持つシステム割り当てマネージド ID に割り当てて、これらのアクセス許可を付与します。
[Select from Key Vault](キー コンテナーから選択) オプションを選択します。
[Select a key vault and key] (キー コンテナーとキーを選択する) を選択します。
使用するキーを含むキー コンテナーを選択します。 新しいキー コンテナーを作成することもできます。
キー コンテナーからキーを選択します。 新しいキーを作成することもできます。
キー コンテナーへのアクセスを認証するために使用する ID の種類を選択します。 オプションには、[システム割り当て] (既定) または [ユーザー割り当て] があります。 マネージド ID の種類の詳細については、「マネージド ID の種類」を参照してください。
[システム割り当て] を選択すると、ストレージ アカウントのシステム割り当てマネージド ID が内部で作成されます (まだ存在しない場合)。
[ユーザー割り当て] を選択した場合は、キー コンテナーへのアクセス許可を持つ既存のユーザー割り当て ID を選択する必要があります。 ユーザー割り当てマネージド ID を作成する方法については、「ユーザー割り当てマネージド ID の管理」を参照してください。
変更を保存。
キーを指定した後は、Azure portal に、キーのバージョンの自動更新が有効になっていることが示されて、現在暗号化に使用されているキーのバージョンが表示されます。 ポータルには、キー コンテナーへのアクセスの承認に使用されるマネージド ID の種類と、マネージド ID に対するプリンシパル ID も表示されます。
$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
$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
$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
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 マネージド キーにいつでも戻すことができます。