Key Vault は、パスワードやデータベース接続文字列などの汎用シークレットのセキュリティで保護されたストレージを提供します。
開発者から見ると、Key Vault API はシークレット値を文字列として受け取って返します。 Key Vault の内部では、シークレットはオクテット (8 ビット バイト) のシーケンスとして格納および管理され、最大サイズはそれぞれ 25k バイトです。 Key Vault サービスでは、シークレットのセマンティクスは提供されていません。 データを受け入れ、暗号化し、格納し、シークレット識別子 (id) を返すだけです。 後で識別子を使用して、シークレットを取得できます。
機密性の高いデータの場合、クライアントはデータに対する追加の保護レイヤーを考慮する必要があります。 たとえば、Key Vault に保存する前に別の保護キーを使用してデータを暗号化します。
Key Vault では、シークレットの contentType フィールドもサポートされています。 クライアントはシークレットのコンテンツ タイプを指定して、シークレット データの取得時の解釈に役立ちます。 このフィールドの最大長は 255 文字です。 推奨される使用方法は、シークレット データを解釈するためのヒントです。 たとえば、実装がパスワードと証明書の両方をシークレットとして格納する場合は、このフィールドを使用して区別します。 定義済みの値はありません。
暗号化
Key Vault 内のシークレットはすべて、暗号化した状態で格納されます。 Key Vault は保存中のシークレットを暗号化キーの階層で暗号化し、その階層内のすべてのキーは FIPS 140-2 に準拠しているモジュールによって保護されます。 この暗号化は透過的に行われ、ユーザーによる操作は必要ありません。 ユーザーによって追加されたシークレットは、Azure Key Vault サービスによって暗号化され、ユーザーが読み取るとき自動的に暗号化が解除されます。
キー階層の暗号化リーフ キーは、各キー コンテナーに固有です。 キー階層の暗号化ルート キーはセキュリティの世界に固有であり、FIPS 140-2 レベル 3 以降で検証されるモジュールによって保護されます。
シークレット属性
シークレット データに加えて、次の属性を指定できます。
- exp: IntDate、省略可能、既定値は 永続的です。 exp (expiration time) 属性は、特定の状況を除き、シークレット データを取得すべきでない有効期限を識別します。 このフィールドは、 特定のシークレット を使用できないことをユーザーに Key Vault サービスに通知するため、情報提供のみを目的としています。 その値は、IntDate 値を含む数値でなければなりません。
- nbf: IntDate、省略可能、既定値は 現在です。 nbf (not before: 有効期間開始日時) 属性は、特定の条件の場合を除き、それより前はシークレット データを取得してはならない日時を示します。 このフィールドは 情報提供 のみを目的としています。 その値は、IntDate 値を含む数値でなければなりません。
- enabled: boolean、省略可能、既定値は true。 この属性は、シークレット データを取得できるかどうかを指定します。 enabled 属性は nbf および exp と共に使用され、操作が nbf と exp の間で行われる場合、enabled が true に設定されているときにのみ許可されます。 特定の状況を除き、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 リファレンスのシークレット操作を参照してください。 アクセス許可の確立の詳細については、「 コンテナー - コンテナーの作成または更新 と コンテナー - アクセス ポリシーの更新」を参照してください。
Key Vault でのアクセスを制御するためのハウツー ガイド:
- CLI を使用して Key Vault アクセス ポリシーを割り当てる
- PowerShell を使用して Key Vault アクセス ポリシーを割り当てる
- Azure portal を使用して Key Vault アクセス ポリシーを割り当てる
- Azure ロールベースのアクセス制御を使用して、Key Vault のキー、証明書、シークレットへのアクセスを提供する
シークレットのタグ
タグの形式で、アプリケーション固有のメタデータをさらに指定できます。 Key Vault では最大 15 個のタグがサポートされており、それぞれ 512 文字の名前と 512 文字の値を持つことができます。
注
タグは、呼び出し元が list または get のアクセス許可を持っている場合に呼び出し元によって読み取ることができます。
使用シナリオ
| いつ使用するか | 例示 |
|---|---|
| パスワード、アクセス キー、サービス プリンシパル クライアント シークレットなどのサービス間通信の資格情報を安全に保存、管理、監視します。 | - 仮想マシンで Azure Key Vault を使用する - Azure Web アプリで Azure Key Vault を使用する |