次の方法で共有


マルチテナント機能と Azure Key Vault

Azure Key Vault は、シークレット、暗号化キー、証明書など、ソリューションのセキュリティで保護されたデータを管理するために使用されます。 この記事では、マルチテナント ソリューションに役立つ Azure Key Vault のいくつかの機能について説明します。 その後、Key Vault の使用方法を計画する際に役立つガイダンスへのリンクを提供します。

分離モデル

Azure Key Vault を使用するマルチテナント システムを扱う場合は、使用する分離レベルを決定する必要があります。 使用する分離モデルの選択は、次の要因によって異なります。

  • テナントはいくつある予定ですか?
  • 複数のテナント間でアプリケーション層を共有する、シングルテナント アプリ インスタンスをデプロイする、またはテナントごとに個別のデプロイ スタンプをデプロイしますか?
  • テナントは独自の暗号化キーを管理する必要がありますか?
  • テナントには、シークレットが他のテナントのシークレットとは別に格納されている必要があるコンプライアンス要件がありますか?

以下の表に、Azure Key Vault の主なテナント モデル間の違いをまとめています。

考慮事項 プロバイダーのサブスクリプション内のテナントあたりのコンテナー数 テナントのサブスクリプション内のテナントあたりのコンテナー数 共有コンテナー
データの分離 非常に高
パフォーマンスの分離 中。 コンテナーが多い場合でも、高スループットが制限される可能性があります
配置の複雑性 テナントの数に応じて低から中 高。 テナントは、プロバイダーにアクセス権を正しく付与する必要があります
操作の複雑さ プロバイダーには低、テナントには高 最低
シナリオ例 テナントごとの個々のアプリ インスタンス 顧客が管理する暗号化キー 共有アプリケーション層を備えた大規模なマルチテナント ソリューション

プロバイダーのサブスクリプション内のテナントあたりのコンテナー数

(サービス プロバイダーの) Azure サブスクリプション内のテナントごとにコンテナーをデプロイすることを検討できます。 この方法では、各テナントのデータ間で強力なデータ分離が提供されます。 ただし、テナントの数が増えると、デプロイして管理する必要のあるコンテナーの数も増えます。

Azure サブスクリプションにデプロイできるコンテナーの数には制限はありません。 ただし、次の制限を考慮する必要があります。

テナントのサブスクリプション内のテナントあたりのコンテナー数

場合によっては、テナントが独自の Azure サブスクリプションにコンテナーを作成し、シークレット、証明書、またはキーを操作するためのアクセス権をアプリケーションに付与したい場合があります。 この方法は、ソリューション内で カスタマー マネージド キー (CMK) の暗号化を許可する場合に適しています。

テナントのコンテナー内のデータにアクセスするには、テナントがコンテナーへのアクセス権をアプリケーションに提供する必要があります。 このプロセスでは、アプリケーションが Microsoft Entra インスタンスを介して認証する必要があります。 1 つのアプローチは、 マルチテナント Microsoft Entra アプリケーションを発行することです。 テナントは、1 回限り同意プロセスを実行する必要があります。 まず、マルチテナント Microsoft Entra アプリケーションを自分の Microsoft Entra テナントに登録します。 次に、マルチテナント Microsoft Entra アプリケーションに、コンテナーへの適切なレベルのアクセス権を付与します。 また、作成したコンテナーの完全なリソース ID も提供する必要があります。 次に、アプリケーション コードで、独自の Microsoft Entra ID のマルチテナント Microsoft Entra アプリケーションに関連付けられているサービス プリンシパルを使って、各テナントのコンテナーにアクセスできます。

または、各テナントに、サービスで使用するサービス プリンシパルを作成し、その資格情報を提供するように求めることもできます。 ただし、このアプローチでは、各テナントの資格情報を安全に保存および管理する必要があり、セキュリティ上の問題が生じます。

テナントでコンテナーに対するネットワーク アクセス制御が構成されている場合は、このコンテナーにアクセスできることを確認してください。 また、テナントによってネットワーク アクセス制御が変更され、コンテナーにアクセスできなくなる状況に対応できるように、アプリケーションを設計してください。

共有コンテナー

テナントのシークレットを 1 つのコンテナー内で共有することもできます。 コンテナーは (ソリューション プロバイダーの) Azure サブスクリプションにデプロイされ、管理が必要です。 この方法は最も簡単ですが、最小限のデータ分離とパフォーマンスの分離を提供します。

また、複数の共有コンテナーをデプロイすることもできます。 たとえば、 展開スタンプ パターンに従うと、各スタンプ内に共有コンテナーをデプロイする可能性があります。 同様に、マルチリージョン ソリューションをデプロイする場合は、次の理由でコンテナーを各リージョンにデプロイする必要があります。

  • コンテナー内のデータを操作するときのリージョン間トラフィックの待機時間を回避するため。
  • データ所在地の要件をサポートするため。
  • 同じリージョン デプロイを必要とする他のサービス内のリージョン コンテナーの使用を有効にするため。

共有コンテナーを使用する場合は、コンテナーに対して実行する操作の数を考慮することが重要です。 操作には、シークレットの読み取りと暗号化または暗号化解除操作の実行が含まれます。 Key Vaultは、1 つのコンテナーに対して実行できる要求の数と、Azure サブスクリプション内のすべてのコンテナーに対して行うことができる要求の数に制限を課します調整のガイダンスに従っていることを確認します。 取得するシークレットを安全にキャッシュし、 エンベロープ暗号化 を使用して、すべての暗号化操作を Key Vault に送信しないようにするなど、推奨されるプラクティスに従ってください。 これらのベスト プラクティスに従うと、1 つのコンテナーに対して大規模なソリューションを実行できます。

テナント固有のシークレット、キー、または証明書を格納する必要がある場合は、名前付けプレフィックスなどの名前付け規則を使用することを検討してください。 たとえば、テナント ID の前に各シークレットの名前を付けます。 その後、アプリケーション コードは、特定のテナントの特定のシークレットの値を簡単に読み込むことができます。

マルチテナント機能を支援する Azure Key Vault の機能

Tags

Key Vaultでは、カスタム メタデータを使用したシークレット、証明書、キーのタグ付けがサポートされているため、タグを使用して、テナント固有のシークレットごとにテナント ID を追跡できます。 ただし、Key Vault ではタグによるクエリはサポートされていないため、この機能はアプリケーション ロジック内で使用するのではなく、管理目的に最適です。

詳細情報:

Azure Policy のサポート

多数のコンテナーをデプロイする場合は、ネットワーク アクセスの構成、ログ記録、アクセス制御に関する一貫した標準に従っていることを確認することが重要です。 Azure Policy を使用して、コンテナーが要件に従って構成されていることを確認することを検討してください。

詳細情報:

マネージド HSM と専用 HSM

1 秒あたりに多数の操作を実行する必要があり、Key Vault 操作の制限が不十分な場合は、 Managed HSM または Dedicated HSMのいずれかを使用することを検討してください。 どちらの製品も予約容量を提供しますが、通常は Key Vault よりもコストが高くなります。 さらに、各リージョンにデプロイできるこれらのサービスのインスタンス数の制限に注意してください。

詳細情報:

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

  • John Downs | プリンシパル ソフトウェア エンジニア

その他の共同作成者:

  • Jack Lichwa | プリンシパル プロダクト マネージャー、Azure Key Vault
  • Arsen Vladimirskiy | FastTrack for Azure のプリンシパル カスタマー エンジニア

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ

マルチテナント機能のデプロイおよび構成の方法を確認します。