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 では、Azure Active Directory (Azure AD) 認証が使用されます。これにはアクセスを許可する Azure AD セキュリティ プリンシパルが必要です。 Azure AD セキュリティ プリンシパルは、ユーザー、アプリケーション サービス プリンシパル、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 に対して認証する方法に関するチュートリアルについては、以下を参照してください。

キー、証明書、シークレットの管理

データ プレーンによって、キー、証明書、およびシークレットへのアクセスを制御します。 データ プレーンによるアクセス制御には、ローカル コンテナー アクセス ポリシーまたは Azure RBAC を使用できます。

キーの API と SDK

Azure CLI PowerShell REST API リソース マネージャー .NET Python Java JavaScript
参照
クイックスタート
リファレンス
クイックスタート
参照 参照
クイックスタート
参照
クイックスタート
リファレンス
クイックスタート
参照
クイックスタート
リファレンス
クイックスタート

証明書の 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 を使用する完全な例については、Azure Key Vault コード サンプルのページを参照してください。

タスク固有のガイダンス

次の記事とシナリオは、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 の概要と概念

関連情報:

ソーシャル