Azure Key Vault 開発者ガイド
Azure Key Vault を使用すると、アプリケーション内から機密情報に安全にアクセスできるようになります。
- 自分でコードを記述しなくても、キー、シークレット、証明書が保護され、自分のアプリケーションからそれらを簡単に使用できます。
- 顧客自身にキー、シークレット、証明書を所有して管理してもらうことができるため、主要なソフトウェア機能の提供に集中できます。 このようにすることで、アプリケーションで、お客様のテナント キー、シークレット、証明書に対して義務や潜在的責任を負うことはありません。
- アプリケーションで署名と暗号化にキーを使用しながら、キー管理をアプリケーションの外部で行うことができます。 詳細については、キーについてのページを参照してください。
- パスワード、アクセス キー、SAS トークンなどの資格情報をシークレットとして Key Vault に格納することにより、管理することができます。 詳細については、シークレットについてのページを参照してください。
- 証明書の管理。 詳細については、証明書についてのページを参照してください。
Azure Key Vault の一般的な情報については、「Azure Key Vault について」を参照してください。
パブリック プレビュー
Key Vault の新機能のパブリック プレビューは定期的にリリースされます。 パブリック プレビュー機能をお試しいただき、azurekeyvault@microsoft.com (フィードバック用のメール アドレス) までご意見をお寄せください。
キー コンテナーの作成と管理
他の Azure サービスと同様に、Key Vault は Azure Resource Manager によって管理します。 Azure Resource Manager は、Azure のデプロイおよび管理サービスです。 それを使用して、Azure アカウントで、リソースを作成、更新、削除することができます。
Azure のロールベースのアクセス制御 (RBAC) は、管理レイヤーへのアクセスを制御し、管理プレーンとも呼ばれます。 Key Vault の管理プレーンを使用して、キーコンテナーとそれらの属性 (アクセス ポリシーを含む) を作成して管理します。 データ プレーンを使用して、キー、証明書、およびシークレットを管理します。
定義済みの Key Vault 共同作成者ロールを使用して、Key Vault への管理アクセス権を付与できます。
キー コンテナー管理のための API と SDK
Azure CLI | PowerShell | REST API | リソース マネージャー | .NET | Python | Java | JavaScript |
---|---|---|---|---|---|---|---|
参照 クイックスタート |
参照 クイックスタート |
参照 | 参照 クイックスタート |
参照 | 参照 | 参照 | リファレンス |
インストール パッケージとソース コードについては、クライアント ライブラリに関するページを参照してください。
コードでの Key Vault に対する認証
Key Vault では Microsoft Entra 認証を使用します。これには、アクセス権を付与するために Microsoft Entra セキュリティ プリンシパルが必要です。 Microsoft Entra セキュリティ プリンシパルは、ユーザー、アプリケーション サービス プリンシパル、Azure リソースのマネージド ID、またはこれらのいずれかの種類のグループなどです。
認証のベスト プラクティス
Azure にデプロイされるアプリケーションにはマネージド ID を使用することが推奨されます。 マネージド ID がサポートされていない Azure サービスを使用する場合、またはアプリケーションをオンプレミスにデプロイしている場合は、他の可能な方法として証明書を使用したサービス プリンシパルがあります。 そのシナリオでは、証明書を Key Vault に格納し、頻繁にローテーションする必要があります。
開発環境とテスト環境には、シークレットによるサービス プリンシパルを使用します。 ローカル開発および Azure Cloud Shell には、ユーザー プリンシパル使用します。
各環境では、次のセキュリティ プリンシパルが推奨されます。
- 運用環境: 証明書を使用したマネージド ID またはサービス プリンシパル。
- テスト環境と開発環境: マネージド ID、証明書を使用したサービス プリンシパル、またはシークレットを使用したサービス プリンシパル。
- ローカル開発: シークレットを使用したユーザー プリンシパルまたはサービス プリンシパル。
Azure ID クライアント ライブラリ
上記の認証シナリオは、Azure ID クライアント ライブラリでサポートされており、Key Vault SDK と統合されています。 コードを変更することなく、環境やプラットフォーム全体で Azure ID クライアント ライブラリを使用できます。 ライブラリによって、Azure CLI、Visual Studio、Visual Studio Code、およびその他の手段で Azure ユーザーにサインインしているユーザーから、自動的に認証トークンが取得されます。
Azure ID クライアント ライブラリの詳細については、以下を参照してください。
.NET | Python | Java | JavaScript |
---|---|---|---|
Azure Identity SDK .NET | Azure Identity SDK Python | Azure Identity SDK Java | Azure Identity SDK JavaScript |
Note
Key Vault .NET SDK バージョン 3 用のアプリ認証ライブラリが推奨されていましたが、それは現在非推奨になりました。 Key Vault .NET SDK バージョン 4 に移行するには、AppAuthentication から Azure.Identity への移行ガイダンスに関する記事に従ってください。
アプリケーションで Key Vault に対して認証する方法に関するチュートリアルについては、以下を参照してください。
- .NET で仮想マシンを使用して Azure Key Vault を使用する
- Python で仮想マシンを使用して Azure Key Vault を使用する
- マネージド ID を使用して Key Vault を .NET の Azure Web アプリに接続する
キー、証明書、シークレットの管理
注意
.NET、Python、Java、JavaScript、PowerShell、および Azure CLI 用の SDK は、パブリック プレビューと一般提供の期間を通して Key Vault 機能リリース プロセスの一部であり、Key Vault サービス チームのサポートがあります。 Key Vault 用の他の SDK クライアントは他にもありますが、それらはそれぞれの SDK チームが GitHub で構築・サポートし、各チームのスケジュールでリリースされます。
データ プレーンによって、キー、証明書、およびシークレットへのアクセスを制御します。 データ プレーンによるアクセス制御には、ローカル コンテナー アクセス ポリシーまたは Azure RBAC を使用できます。
キーの API と SDK
Azure CLI | PowerShell | REST API | リソース マネージャー | .NET | Python | Java | JavaScript |
---|---|---|---|---|---|---|---|
参照 クイックスタート |
参照 クイックスタート |
参照 | 参照 クイックスタート |
参照 クイックスタート |
参照 クイックスタート |
リファレンス クイックスタート |
参照 クイックスタート |
他のライブラリ
Key Vault および Managed HSM の暗号化クライアント
このモジュールでは、Go 用の Azure Key Vault Keys クライアント モジュール用の暗号化クライアントを提供します。
Note
このプロジェクトは Azure SDK チームによってサポートされていませんが、他のサポートされている言語の暗号化クライアントと一致します。
Language | リファレンス |
---|---|
Go | リファレンス |
証明書の API と SDK
Azure CLI | PowerShell | REST API | リソース マネージャー | .NET | Python | Java | JavaScript |
---|---|---|---|---|---|---|---|
参照 クイックスタート |
参照 クイックスタート |
参照 | 該当なし | リファレンス クイックスタート |
参照 クイックスタート |
リファレンス クイックスタート |
リファレンス クイックスタート |
シークレットの API と SDK
Azure CLI | PowerShell | REST API | リソース マネージャー | .NET | Python | Java | JavaScript |
---|---|---|---|---|---|---|---|
参照 クイックスタート |
参照 クイックスタート |
参照 | 参照 クイックスタート |
参照 クイックスタート |
参照 クイックスタート |
リファレンス クイックスタート |
参照 クイックスタート |
シークレットの使用方法
Azure Key Vault は、アプリケーションのシークレットを保存するためにのみ使用してください。 Key Vault に格納する必要があるシークレットの例には次のようなものがあります。
- クライアント シークレットのシークレット
- Connection strings
- パスワード
- 共有アクセス キー
- SSH キー
ユーザー名やアプリケーション ID などのシークレット関連情報は、シークレットにタグとして格納できます。 その他の機密構成設定については、Azure App Configuration を使用する必要があります。
関連項目
インストール パッケージとソース コードについては、クライアント ライブラリに関するページを参照してください。
Key Vault のデータ プレーンのセキュリティについては、「Azure Key Vault のセキュリティ機能」を参照してください。
アプリケーションでの Key Vault の使用
Key Vault の最新の機能を利用するため、アプリケーションでシークレット、証明書、キーを使用する際は、利用可能な Key Vault SDK を使用することが推奨されます。 Key Vault SDK と REST API は、製品の新機能がリリースされるときに更新され、ベスト プラクティスとガイドラインに従っています。
基本的なシナリオの場合、簡単に使用するためのライブラリや統合ソリューションがあり、Microsoft パートナーやオープン ソース コミュニティによってサポートが提供されています。
証明書の場合は、次を使用できます。
- Key Vault 仮想マシン (VM) 拡張機能。Azure Key Vault に格納されている証明書を自動更新します。 詳細については、次を参照してください。
- Azure App Service 統合。Key Vault から証明書をインポートし、自動的に更新できます。 詳細については、「Key Vault から証明書をインポートする」を参照してください。
シークレットの場合は、次を使用できます。
- App Service アプリケーション設定での Key Vault シークレット。 詳細については、「App Service と Azure Functions の Key Vault 参照を使用する」を参照してください。
- Key Vault は Azure App Configuration を参照し、構成とシークレットへのアプリケーションのアクセスを合理化します。 詳細については、Azure App Configuration で Key Vault 参照を使用する方法に関するページを参照してください。
コード例
アプリケーションで Key Vault を使用する完全な例については、Azure Key Vault コード サンプルのページを参照してください。
タスク固有のガイダンス
次の記事とシナリオは、Azure Key Vault を操作するためのタスク固有のガイダンスを提供します。
- キー コンテナーにアクセスするには、クライアント アプリケーションが、各種機能のために複数のエンドポイントにアクセスできる必要があります。 ファイアウォールの背後にあるキー コンテナーへのアクセスに関するページを参照してください。
- Azure VM で実行されているクラウド アプリケーションには、証明書が必要です。 この VM に証明書を取り込むにはどうすればいいでしょうか。 「Windows 用の Key Vault 仮想マシン拡張機能」および「Linux 用の Key Vault 仮想マシン拡張機能」を参照してください。
- Azure CLI、PowerShell、または Azure portal を使用してアクセス ポリシーを割り当てるには、「Key Vault アクセス ポリシーを割り当てる」を参照してください。
- キー コンテナーの使用方法とライフサイクル、および論理的な削除が有効な各種キー コンテナー オブジェクトのガイダンスについては、「論理的な削除と消去保護を使用した Azure Key Vault の回復の管理」を参照してください。
- デプロイ時にパラメーターとしてセキュリティで保護された値 (パスワードなど) を渡す必要がある場合は、キー コンテナーにその値をシークレットとして格納し、他の Resource Manager テンプレートで値を参照できます。 「デプロイ時に Azure Key Vault を使用して、セキュリティで保護されたパラメーター値を渡す」を参照してください。
Key Vault との統合
次のサービスとシナリオでは、Key Vault を使用し、統合します。
- 保存データの暗号化によって、データが永続化されるときにエンコード (暗号化) することができます。 データ暗号化キーは多くの場合、さらにアクセスを制限するため、Azure Key Vault のキーの暗号化キーで暗号化されます。
- Azure Information Protection を使用して、独自のテナント キーを管理できます。 たとえば、テナント キーの管理をマイクロソフトに任せる (既定値) 代わりに、組織に適用される特定の規則を遵守する独自のテナント キーを管理できます。 独自のテナント キーの管理は、Bring Your Own Key (BYOK) とも呼ばれます。
- Azure Private Link を使用すると、自分の仮想ネットワーク内のプライベート エンドポイント経由で、Azure サービス (Azure Key Vault、Azure Storage、Azure Cosmos DB など) と、Azure でホストされている顧客またはパートナー サービスにアクセスできます。
- Key Vault と Azure Event Grid の統合により、キー コンテナーに格納されているシークレットの状態が変更されたときにユーザーに通知できます。 アプリケーションに新しいバージョンのシークレットを配布したり、期限切れが近いシークレットをローテーションしたりして、停止を防ぐことができます。
- Azure DevOps シークレットを Key Vault の望ましくないアクセスから保護することができます。
- Key Vault に格納されているシークレットを使用して、Azure Databricks から Azure Storage に接続します。
- Kubernetes 上のシークレット ストア CSI ドライバー向けに Azure Key Vault プロバイダーを構成して実行します。
Key Vault の概要と概念
関連情報:
- 削除が偶発的なものか意図的なものかにかかわらず、削除されたオブジェクトの回復を可能にする機能については、「Azure Key Vault の論理的な削除の概要」を参照してください。
- スロットリングの基本概念と、アプリのアプローチを取得する方法については、「Azure Key Vault のスロットル ガイダンス」を参照してください。
- リージョンとセキュリティ領域の関係については、「Azure Key Vault セキュリティ ワールドと地理的境界」を参照してください。