Key Vault は、パスワードやデータベース接続文字列などの汎用シークレットのセキュリティで保護されたストレージを提供します。
開発者の観点から、Key Vault API はシークレット値を受け取り、文字列として返します。 内部的には、Key Vaultはシークレットをオクテット (8 ビット バイト) のシーケンスとして格納および管理し、それぞれ最大サイズは 25 KB です。 Key Vault サービスでは、シークレットのセマンティクスは提供されません。 データを受け入れ、暗号化し、格納し、シークレット識別子 (id) を返すだけです。 この識別子を使用して、後でシークレットを取得できます。
機密性の高いデータの場合は、保護のレイヤーを追加することを検討してください。 たとえば、Key Vaultに格納する前に、別の保護キーを使用してデータを暗号化します。
Key Vaultでは、シークレットの contentType フィールドもサポートされています。 クライアントはシークレットのコンテンツ タイプを指定して、シークレット データの取得時の解釈に役立ちます。 このフィールドの最大長は 255 文字です。 推奨される使用方法は、シークレット データを解釈するためのヒントです。 たとえば、実装ではパスワードと証明書の両方をシークレットとして格納し、このフィールドを使用して区別できます。 定義済みの値はありません。
暗号化
Key Vaultは、key vault内のすべてのシークレットを暗号化されたデータとして格納します。 Key Vaultは、暗号化キーの階層を使用して保存中のシークレットを暗号化し、階層内のすべてのキーを FIPS 検証モジュールによって保護します。 この暗号化は透過的であり、ユーザーからの操作は必要ありません。 Azure Key Vault サービスは、シークレットを追加するときに暗号化し、読み取ると自動的に暗号化を解除します。
キー階層の暗号化リーフ キーは、各キー コンテナーに固有です。 キー階層の暗号化ルート キーは、セキュリティの世界に固有です。 各Key Vaultレベルと Managed HSM の FIPS 検証レベルについては、「About キー: コンプライアンス」を参照してください。
シークレットの属性
シークレット データに加えて、次の属性を指定できます。
- exp: IntDate、省略可能、既定値は 永続的です。 exp (expiration time) 属性は、特定の状況を除き、シークレット データを取得しない場合の有効期限を設定します。 このフィールドは、 特定のシークレット を使用できないことをユーザーに Key Vault サービスに通知するため、情報提供のみを目的としています。 その値は、IntDate 値を含む数値でなければなりません。
- nbf: IntDate、省略可能、既定値は 現在です。 nbf (前ではない) 属性は、特定の状況を除き、シークレット データを取得すべきでない時刻を設定します。 このフィールドは 情報提供 のみを目的としています。 その値は、IntDate 値を含む数値でなければなりません。
- enabled: boolean、省略可能、既定値は true。 この属性は、シークレット データを取得できるかどうかを指定します。 nbf および exp で enabled 属性を使用します。nbf と exp の間で操作が発生した場合、この操作は有効に設定されている場合にのみ許可されます。 特定の状況を除き、nbf ウィンドウと exp ウィンドウ外の操作は自動的に許可されません。
シークレット属性を含む応答には、次の読み取り専用属性が含まれます。
- created:IntDate、省略可能。 created 属性は、このバージョンのシークレットが作成された日時を示します。 この属性が追加される前に作成されたシークレットについては、この値は null です。 その値は、IntDate 値を含む数値でなければなりません。
- updated:IntDate、省略可能。 updated 属性は、このバージョンのシークレットが更新された日時を示します。 この属性が追加される前に最後に更新されたシークレットについては、この値は null です。 その値は、IntDate 値を含む数値でなければなりません。
各キー コンテナー オブジェクトの種類の共通属性については、「Azure Key Vault キー、シークレット、証明書の概要を参照してください。
日付と時刻で制御される操作
シークレットの 取得 操作は、 nbf / exp ウィンドウの外側にある、まだ有効でないシークレットと期限切れのシークレットに対して機能します。 まだ有効でないシークレットに対するシークレットの 取得 操作の呼び出しは、テスト目的で使用できます。 期限切れのシークレットの取得は、復旧操作に使用できます。
シークレットのアクセス制御
Key Vaultで管理されるシークレットのアクセス制御は、それらのシークレットを含むkey vaultのレベルで提供されます。 シークレットのアクセス制御ポリシーは、同じキー コンテナー内のキーのアクセス制御ポリシーとは異なります。 ユーザーはシークレットを保持する 1 つ以上のコンテナーを作成できます。また、シークレットのセグメント化と管理をシナリオに合わせて維持する必要があります。
コンテナーのシークレット アクセス制御エントリで、プリンシパル ベースで次のアクセス許可を使用します。 これらのアクセス許可は、シークレット オブジェクトで許可される操作を厳密に反映します。
シークレット管理操作に対するアクセス許可
- get: シークレットを読み取る
- list: Key Vaultに格納されているシークレットまたはシークレットのバージョンを一覧表示します
- set: シークレットを作成する
- delete: シークレットを削除する
- 回復: 削除されたシークレットを回復する
- バックアップ: キー コンテナー内のシークレットをバックアップする
- 復元: バックアップされたシークレットをキー コンテナーに復元する
特権操作に対するアクセス許可
- purge: 削除されたシークレットを消去 (完全に削除) する
シークレットの操作の詳細については、Key Vault REST API リファレンスSecret 操作を参照してください。 アクセス許可の確立の詳細については、「 コンテナー - コンテナーの作成または更新 と コンテナー - アクセス ポリシーの更新」を参照してください。
Key Vaultでアクセスを制御するためのハウツー ガイド:
シークレットのタグ
タグの形式で、アプリケーション固有のメタデータをさらに指定できます。 Key Vaultは最大 15 個のタグをサポートしており、それぞれ 512 文字の名前と 512 文字の値を持つことができます。
注
呼び出し元が リスト を持っているか、アクセス許可 を取得 している場合は、タグを読み取ることができます。
使用シナリオ
| いつ使用するか | 例示 |
|---|---|
| パスワード、アクセス キー、サービス プリンシパル クライアント シークレットなどのサービス間通信の資格情報を安全に保存、管理、監視します。 |
-
仮想マシンでAzure Key Vaultを使用する - Azure Web アプリでAzure Key Vaultを使用する |