次の方法で共有


マネージド HSM へのアクセスをセキュリティで保護する

このチュートリアルでは、Azure Key Vault Managed HSM のアクセス制御の実際の実装例を示します。 現実的なシナリオを通じて、Azure RBAC と Managed HSM ローカル RBAC を使用して職務の分離を実装する方法について説明します。

Important

このチュートリアルを進める前に、コントロール プレーンとデータ プレーン アクセスの違いなど、Managed HSM アクセス制御モデルを理解しておく必要があります。 この概念の基礎については、 Managed HSM のアクセス制御に関するページを参照してください。

[前提条件]

Azure Cloud Shell

Azure は、ブラウザーから使用できる対話型シェル環境である Azure Cloud Shell をホストします。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

Option 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Azure Cloud Shell の Try It の例を示すスクリーンショット。
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Azure Cloud Shell を起動するボタン。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Azure portal の [Cloud Shell] ボタンを示すスクリーンショット

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows および Linux では Ctrl+Shift+V を選択し、macOS では Cmd+Shift+V を選択して、コードまたはコマンドをクラウドシェルセッションに貼り付けます。

  4. を選択し、 を入力してコードまたはコマンドを実行します。」

Azure にサインインする

CLI を使用して Azure にサインインするには、次のように入力します。

az login

CLI を使用したログイン オプションの詳細については、Azure CLI を使用したサインインに関するページを参照してください。

シナリオの例を理解する

この例では、署名操作に RSA 2,048 ビット キーを使用するアプリケーションを開発しています。 アプリケーションは、 マネージド ID を持つ Azure 仮想マシン (VM) で実行されます。 署名に使用される RSA キーは、マネージド HSM に格納されます。

役割と責任を定義する

アプリケーションを管理、展開、監査する次のロールを特定しました。

  • セキュリティ チーム: CSO (最高セキュリティ責任者) または同様の共同作成者のオフィスの IT スタッフ。 セキュリティ チームは、キーの適切な保管を担当します。 キーには、署名用の RSA キーまたは EC キー、データ暗号化用の RSA または AES キーが含まれます。
  • 開発者とオペレーター: アプリケーションを開発して Azure にデプロイするスタッフ。 このチームのメンバーは、セキュリティ スタッフの一員ではありません。 RSA キーなどの機密データにアクセスすることはできません。 展開するアプリケーションのみが、この機密データにアクセスできる必要があります。
  • 監査者: この役割は、開発スタッフまたは一般 IT スタッフのメンバーではない共同作成者を対象とします。 証明書、キー、シークレットの使用とメンテナンスを確認して、セキュリティ標準に準拠していることを確認します。

アプリケーションの範囲外には、サブスクリプション (またはリソース グループ) 管理者という別のロールがあります。 サブスクリプション管理者は、セキュリティ チームの初期アクセス許可を設定します。 アプリケーションに必要なリソースを含むリソース グループを使用して、セキュリティ チームへのアクセス権を付与します。

ロールごとに必要な操作を定義する

ロールに対する次の操作を承認する必要があります。

セキュリティ チーム

  • マネージド HSM を作成する
  • マネージド HSM セキュリティ ドメインをダウンロードする (ディザスター リカバリー用)
  • ログ記録を有効にする
  • キーの生成またはインポート
  • ディザスター リカバリー用のマネージド HSM バックアップを作成する
  • 特定の操作に対するアクセス許可をユーザーとアプリケーションに付与するように Managed HSM ローカル RBAC を設定する
  • キーを定期的にロールする

開発者と演算子

  • 署名に使用される RSA キーの参照 (キー URI) をセキュリティ チームから取得する
  • キーにプログラムでアクセスするアプリケーションを開発してデプロイする

監査 役

  • キーの有効期限を確認して、キーが最新の状態であることを確認する
  • ロールの割り当てを監視して、承認されたユーザー/アプリケーションのみがキーにアクセスできることを確認する
  • マネージド HSM ログを確認して、データ セキュリティ標準に準拠したキーの適切な使用を確認する

適切なロールを割り当てる

次の表は、マネージド HSM にアクセスするためのチームとリソースへのロールの割り当てをまとめたものです。

Role コントロール プレーンの役割 データ プレーン ロール
セキュリティ チーム Managed HSM 共同作成者 Managed HSM 管理者
開発者と演算子 None None
監査者 None 管理型HSM暗号化監査機能
アプリケーションによって使用される VM のマネージド ID None マネージド HSM 暗号化ユーザー
アプリケーションによって使用されるストレージ アカウントのマネージド ID None マネージド HSM 暗号化サービス

3 つのチーム ロールには、マネージド HSM アクセス許可と共に他のリソースへのアクセス権が必要です。 VM (または Azure App Service の Web Apps 機能) をデプロイするには、開発者とオペレーターがそれらのリソースの種類に Contributor アクセスする必要があります。 監査担当者は、マネージド HSM ログが格納されているストレージ アカウントへの読み取りアクセス権が必要です。

Azure CLI を使用して実装する

コントロール プレーン ロール (Azure RBAC) を割り当てるには、Azure portal または Azure CLI や Azure PowerShell などの他の管理インターフェイスのいずれかを使用できます。 マネージド HSM データ プレーン ロールを割り当てるには、Azure CLI または Azure REST API を使用する必要があります。

コントロール プレーン ロールの詳細については、 Azure の組み込みロールに関するページを参照してください。 Managed HSM データ プレーン ロールの詳細については、 Managed HSM の Managed HSM ローカル RBAC 組み込みロールに関するページを参照してください。

次の Azure CLI スニペットは、上記で説明したロールの割り当てを実装する方法を示しています。

前提条件

  • Microsoft Entra 管理者は、Contoso セキュリティ チーム、Contoso App DevOps、Contoso アプリ監査者の 3 つのロールを表すセキュリティ グループを作成しました。 管理者は、それぞれのグループにユーザーを追加しました。
  • すべてのリソースは ContosoAppRG リソース グループにあります。
  • マネージド HSM ログは 、contosologstorage ストレージ アカウントに格納されます。
  • ContosoMHSM マネージド HSM と contosologstorage ストレージ アカウントは、同じ Azure の場所にあります。

コントロールプレーンの役割の割り当て

サブスクリプション管理者は、 Managed HSM Contributor ロールをセキュリティ チームに割り当てます。 このロールにより、セキュリティ チームは既存のマネージド HSM を管理し、新しい HSM を作成できます。

# This role assignment allows Contoso Security Team to create new Managed HSMs
az role assignment create --assignee-object-id $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --assignee-principal-type Group --role "Managed HSM Contributor"

データプレーンのロールを割り当てる

既存のマネージド HSM の場合、セキュリティ チームに "Managed HSM Administrator" ロールを割り当てて管理する必要があります。

# This role assignment allows Contoso Security Team to become administrator of existing managed HSM
az keyvault role assignment create --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --scope / --role "Managed HSM Administrator"

ログ記録を構成し、追加のロールを割り当てる

セキュリティ チームはログ記録を設定し、監査者と VM アプリケーションにロールを割り当てます。

# Enable logging
hsmresource=$(az keyvault show --hsm-name ContosoMHSM --query id -o tsv)
storageresource=$(az storage account show --name contosologstorage --query id -o tsv)
az monitor diagnostic-settings create --name MHSM-Diagnostics --resource $hsmresource --logs '[{"category": "AuditEvent","enabled": true}]' --storage-account $storageresource

# Assign the "Crypto Auditor" role to Contoso App Auditors group. It only allows them to read.
az keyvault role assignment create --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso App Auditors' --query 'id' -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Grant the "Crypto User" role to the VM's managed identity. It allows to use keys.
az keyvault role assignment create --hsm-name ContosoMHSM --assignee $(az vm identity show --name "vmname" --resource-group "ContosoAppRG" --query principalId -o tsv) --scope / --role "Managed HSM Crypto User"

# Assign "Managed HSM Crypto Service Encryption User" role to the Storage account identity
storage_account_principal=$(az storage account show --id $storageresource --query identity.principalId -o tsv)
# (if no identity exists), then assign a new one
[ "$storage_account_principal" ] || storage_account_principal=$(az storage account update --assign-identity --id $storageresource --query identity.principalId -o tsv)

az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto Service Encryption User" --assignee $storage_account_principal

運用環境に関する考慮事項

このチュートリアルでは、アクセス制御の実装を示す簡略化されたシナリオを示します。

特定の要件に基づいて、マネージド HSM へのアクセス許可を調整します。 この例では、セキュリティ チームがアプリケーションで使用するために、DevOps スタッフにキーとシークレットの参照 (URI と拇印) を提供することを前提としています。 開発者とオペレーターは、データ プレーンへの直接アクセスを必要としません。 このチュートリアルでは、マネージド HSM のセキュリティ保護に重点を置いていますが、 仮想マシンストレージ アカウントなどの他の Azure リソースにも同様のセキュリティ対策を適用します。

次のステップ