この記事は約15分で読めます。
【こんな方におすすめ】
Azure Key Vault の導入やシークレット管理の見直しを検討しているインフラ担当者・システム管理者
- Azure Key Vault の概要と必要とされる背景
- 主要なセキュリティ機能と利用シーン
- 利用料金とシークレット取得手順
Azure Key Vaultとは
Azure Key Vault は、パスワード、APIキー、証明書、暗号化キーなどのシークレット情報を、安全に一元管理できるクラウド型のセキュリティサービスです。
Entra IDによるアクセス制御や、HSM(ハードウェアセキュリティモジュール)を利用した鍵管理にも対応しており、実際の運用現場でも、シークレット管理の標準化やセキュリティ強化を目的として導入されるケースが増えています。
Azure Key Vault が必要とされる背景
近年では、リモートワークやクラウド活用の拡大により、社外から業務システムへアクセスするケースが増えています。その一方で、APIキーや接続文字列、証明書などのシークレット情報の管理が、セキュリティ運用上の大きな課題になっています。
特に実際の運用では、クラウドサービス連携やシステムのマイクロサービス化によって、管理対象となる認証情報が増加しやすくなります。
現場では、「アプリケーションに直接パスワードを書いていた」「担当者ごとに管理方法が異なっていた」「不要になったアクセスキーが残り続けていた」といったケースも少なくありません。
このような状態では、不正アクセスや情報漏洩のリスクが高まるだけでなく、シークレット更新時の運用負荷や障害発生リスクも大きくなります。特に本番環境では、「どのシステムがどの鍵を利用しているのか分からない」という状況が、インシデント対応を複雑化させる要因になることがあります。
こうした課題を解決するために利用されるのが、シークレット情報をアプリケーションから分離し、安全に一元管理できる Microsoft Azure の「Azure Key Vault」です。
Azure Key Vault で解決できるシークレット管理の課題
本番環境では、シークレット情報をアプリケーション設定ファイルやソースコード内に直接保存しているケースが、セキュリティリスクになることがあります。
実際に、
- Git管理された設定ファイルに認証情報が残っていた
- 退職者が利用していたアクセスキーが削除されていなかった
- 複数システムで同一の認証情報を共有していた
- シークレット更新時にアプリケーション停止が発生した
といった相談は少なくありません。
このような課題に対して、Azure Key Vaultを利用することで、シークレットをアプリケーションから分離して管理できます。
管理されたシークレットはMicrosoftのデータセンター内で保護され、Azureの認証基盤である Microsoft Entra ID と連携してアクセス制御を行います。
Azure Key Vault で管理できるシークレット情報
実際のクラウド運用では、以下のような機密情報を複数のシステムやアプリケーションで利用するケースが増えています。
- APIやSSH接続に利用するアクセスキー
- データベースの接続文字列
- 認証用パスワードやトークン
- データ暗号化や署名に利用する暗号化キー
- SSL/TLS証明書
Azure Key Vaultは、Azureサービスだけでなく、オンプレミス環境や外部クラウドとの連携でも利用できます。
そのため、複数環境を横断したシークレット管理基盤として活用されるケースも増えています。
Azure Key Vaultの仕組み
Azure Key Vaultでは、「誰がアクセスできるか」と「どのように保管されるか」を分離して管理することで、高いセキュリティを実現しています。
厳重なアクセス管理
Azure Key Vaultでは、シークレットごとに細かなアクセス制御を設定できます。
実際の運用では、「開発者は参照のみ可能」「運用担当者のみ更新可能」「特定アプリケーションのみ取得可能」といった権限制御を行うケースが一般的です。
このアクセス管理を支えているのが、Microsoft Entra ID とAzure RBAC(Role-Based Access Control)です。
Microsoft Entra ID では、ユーザーやアプリケーションの認証を行い、RBACでは認証後の操作権限を制御します。
例えば、次のような最小権限構成を実現できます。
- シークレットの読み取りのみ許可
- 新規キー作成のみ許可
- 削除操作は禁止
実際には、権限を広く付与しすぎたことで、開発環境から本番シークレットへアクセスできてしまうケースもあります。
そのため、現場では「必要最小限の権限付与」を前提に設計することが重要になります。
これらのアクセス制御は、Azureサービス全体で統合的に利用できるため、App ServiceやVirtual Machine、Kubernetes環境との連携も容易です。
安全なシークレット保管
シークレットの分離管理
Azure Key Vaultで管理されるシークレットは、分離された保管領域内に格納されます。
用途やシステム単位でAzure Key Vaultを分離することで、万が一アクセス権限の設定ミスや漏洩が発生した場合でも、影響範囲を限定できます。
実際の運用では、次のような構成がよく利用されます。
- 本番環境と開発環境を分離する
- システムごとにVaultを分ける
- 顧客単位で管理領域を分離する
HSMによる暗号化キー管理
Azure Key Vaultは、HSMを利用した鍵管理にも対応しています。
HSMは、暗号化キーをハードウェア内部で安全に管理する仕組みです。
暗号化処理をHSM内部で完結できるため、キー自体を外部へ露出させずに運用できます。
特に、次のような場合は、HSM利用を前提に設計されるケースもあります。
- 個人情報を扱うシステム
- 厳格な監査要件がある環境
- 金融系システム
可用性を考慮した冗長構成
Azure Key Vaultは、リージョン冗長構成にも対応しています。
障害発生時でもシークレット管理基盤を継続利用できるため、可用性を重視する本番環境でも利用しやすいサービスです。
Azure Key Vaultの用途
Azure Key Vaultを導入することで、アプリケーション運用時のセキュリティリスクや管理負荷を低減できます。
アプリケーションとシークレット管理の分離
クラウド環境では、アプリケーションごとに多くの認証情報を扱います。
例えば、次のような認証情報です。
- データベース接続情報
- API連携用トークン
- ストレージ接続キー
- 外部サービス認証情報
しかし、これらをアプリケーション内部で直接管理すると、ソースコード漏洩時に認証情報も同時に漏洩するリスクがあります。
実際に、GitHub上への誤公開や、設定ファイルのバックアップからシークレットが流出する事例も発生しています。
こういったリスクに対して、Azure Key Vaultを利用することで、アプリケーション側には認証情報を保持せず、必要時のみ安全に取得する構成を実現できます。
また、シークレットを集中管理することで、
- 定期的なアクセスキー更新
- 利用状況の監査
- 不要シークレットの整理
といった運用管理も行いやすくなります。
キーを利用した暗号化・署名
Azure Key Vaultは、暗号化や電子署名を行うシステムでも利用されています。
例えば、次のような用途です。
- SSL/TLS証明書管理
- データ暗号化
- ファイル署名
- JWT署名キー管理
暗号化キーが漏洩すると、第三者によるなりすましやデータ改ざんにつながる可能性があります。
そのため、暗号化キーは通常の設定情報以上に厳格な管理が求められます。
Azure Key Vaultでは、HSMを利用することで、暗号化キーを外部へ出さずに暗号処理を実行できます。
HSMはFIPS 140-2準拠のセキュリティ要件を満たしているため、コンプライアンス要件が厳しい環境でも利用されています。
Azureサービスとの連携や段階的な導入にも対応
システムの構成が複雑化する中で、分散された機密情報に対して一貫した管理体制を採ることの重要性は、ますます高まっていくでしょう。
Azure Key Vaultを利用すれば導入コストを極力抑えられるため、まずは局所的な利用を検討してみてください。
また、他のAzureサービスとの連携が容易なため、既にAzureを使われている方にも適しています。
Azure Key Vault の導入をご検討中の方は、お問い合わせフォームよりお気軽にご相談ください。既存のAzure環境との連携や、段階的な導入方法についてもご案内可能です。
また、本記事の内容をまとめた資料もご用意しています。社内共有や比較検討時の参考資料としてご活用ください。
Azure Key Vaultの利用料金
Azure Key Vaultの利用料金は使用した分だけ請求される従量課金制で、価格はキーコンテナの保管形態やキー管理の種類によって分かれています。
シークレット・証明書の操作
| プラン | Standard | Premium |
|---|---|---|
| 秘密情報の操作 | 4.726円 ※10,000トランザクションあたり | 4.726円 ※10,000トランザクションあたり |
| 証明書の操作 | 更新:472.501円/更新リクエスト その他すべての操作:4.726円 ※1万トランザクションあたり | 更新:472.501円/更新リクエスト その他すべての操作:4.726円 ※1万トランザクションあたり |
ソフトウェアで保護されたキー
| プラン | Standard | Premium |
|---|---|---|
| RSA 2048ビットキー | 4.726円 ※1万トランザクション | 4.726円 ※1万トランザクション |
| 高度なキー (RSA 3072ビット、RSA 4096ビットなど) | 23.626円 ※1万トランザクション | 23.626円 ※1万トランザクション |
HSMで保護されたキー
| プラン | Standard | Premium |
|---|---|---|
| RSA 2048ビットキー | 不可 | 1キーあたり:157.501円/月 4.726円 ※1万トランザクションあたり |
| 高度なキー (RSA 3072ビット、RSA 4096ビットなど) | 不可 | 250キーまで:787.501円/月 1,500キーまで:393.751円/月 4,000キーまで:141.751円/月 ※1キーあたりの価格 |
※上記は東日本リージョンにおける価格で、157.5円/ドルで算出されています。
Azure Key Vaultを使ったシークレット管理手順
Webアプリからシークレットを読み込む手順を紹介していきます。
シークレットの作成
まずはAzureポータルにログインして、キーコンテナを作成しましょう。「セキュリティ」カテゴリからキーコンテナ―を選びます。

次の画面で「キーコンテナーの作成」をクリックし、内容を入力していきます。

- Key Vault名:適当な名称
- 地域:東日本、西日本など
- 価格レベル:標準(※利用料金がかかります)

アクセス構成タブでは、アクセス許可モデルに「Azureロールベースのアクセス制御」を選択します。

続けて、シークレットを作成するために「ロールの割り当ての追加」からキーコンテナーの管理権限を付与しましょう。

ロールタブで「キーコンテナー管理者」を選びます。

また、メンバータブにあるアクセスの割り当て先で「ユーザー、グループ、またはサービスプリンシパル」を選んでから「メンバーを選択する」から現在のユーザーを選択し、最後に「レビューと割り当て」をクリックして作成します。

権限を付与できたら、シークレットを作成しましょう。「シークレット」の画面に移り、「生成/インポート」からシークレット作成に進みます。
- 名前:シークレット名
- シークレット値:保存したい文字列
- 有効:はい

「作成」をクリックするとシークレットが作成されます。
Webアプリからのシークレット取得
まずはApp ServiceでWebアプリを作成しましょう。今回は.NETのWebアプリを例として扱います。
- Webアプリ名:Webアプリのホスト名
- 公開:コード
- ランタイムスタック:.NET 8
- 地域:Japan East
- 価格プラン:Free F1
作成後に、App Serviceにキーコンテナ―の読み込み権限を与えるためのマネージドIDを作成します。IDの画面に移り、システム割り当て済みタブで状態をオンにして、「保存」しましょう。
App Serviceのデプロイ方法ではローカルGitを選び、下記のようにローカル環境でWebアプリを作成します。
mkdir kv-app
cd kv-app
dotnet new web
dotnet runまた、ローカルリポジトリとリモートリポジトリの登録を行い、App Serviceにプッシュします。
git init --initial-branch=main
git add .
git commit -m “first commit.”
git remote add azure https://xxxxxx.scm.azurewebsites.net/xxxxxx.git
git push azure main:masterWebアプリが作成できたら、ページが表示できることを確認しましょう。

続いて、Azureポータルでキーコンテナの「アクセス制御(IAM)」の画面に戻り、「ロールの割り当ての追加」を開きます。ロールタブでは「キーコンテナ―シークレットユーザー」を選びましょう。

メンバータブでは「アクセスの割り当て先」のマネージドIDを選び、「メンバーを選択する」から先ほど作成したApp ServiceのマネージドIDを選択して追加し、「レビューと割り当て」をクリックして権限を付与します。

次に、Webアプリからシークレットを読み込むようにコードを変更します。まずは必要なパッケージを下記のコマンドでインストールしましょう。
dotnet add package Azure.Identity
dotnet add package Azure.Security.KeyVault.Secrets続けてWebアプリのProgram.csを下記のように変更します。
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay= TimeSpan.FromSeconds(2),
MaxDelay = TimeSpan.FromSeconds(16),
MaxRetries = 5,
Mode = RetryMode.Exponential
}
};
// URIにはKey Vaultのドメインを入力します
var client = new SecretClient(new Uri("https://xxxxxx.vault.azure.net/"), new DefaultAzureCredential(), options);
// メソッドの引数にはシークレット名を入力します
KeyVaultSecret secret = client.GetSecret("app-secret");
string secretValue = secret.Value;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => secretValue);
app.Run();ビルドを行い、App Serverに再度プッシュしてみましょう。
git push azure main:master下記の画面のように、登録したシークレットが読み込まれていれば成功です。

本来シークレットは内部で処理されるべき情報ですが、今回はわかりやすいように画面に表示しています。
まとめ
- Azure Key Vaultは、パスワードやAPIキー、証明書などのシークレット情報を安全に一元管理できるセキュリティサービスです。
- Microsoft Entra ID や RBAC によるアクセス制御、HSMを利用した鍵管理にも対応しており、シークレットをアプリケーションから分離して安全に運用できます。
- Azure Key Vaultの導入やシークレット管理の見直しをご検討中の方は、お気軽にご相談ください。既存環境に合わせた導入方法や運用設計についてもご案内可能です。


お客様が運営するクラウドの監視・保守・運用業務を、ジードが代行いたします。
お客様のご要望に沿って、適切なクラウド選定から設計・構築までを行います。
Azure上で、AI + 機械学習、分析、ブロックチェーン、IoTを開発します。