Key Vault でのシークレットの管理に関するベスト プラクティス
Azure Key Vault を使用すると、ユーザーはサービスやアプリケーションのパスワードやアクセス キーなどの資格情報をシークレットとして安全に保存できます。 キー コンテナー内のすべてのシークレットは、ソフトウェア キーで暗号化されています。 Key Vault を使用すると、ユーザーはアプリケーションにセキュリティ情報を格納する必要がなくなります。 アプリケーションにセキュリティ情報を格納する必要がなくなると、コードのこの情報部分を作成する必要がなくなります。
Key Vault に格納する必要があるシークレットの例:
- クライアント シークレットのシークレット
- Connection strings
- パスワード
- アクセス キー (Redis Cache、Azure Event Hubs、Azure Cosmos DB)
- SSH キー
IP アドレス、サービス名、その他の構成設定などの他の機密情報は、キー コンテナーではなく Azure App Configuration に格納する必要があります。
各キー コンテナーによってシークレットのセキュリティ境界が定義されます。 アプリケーションごと、リージョンごと、環境ごとの 1 つのキー コンテナーに対して、アプリケーションのシークレットを細かく分離することをお勧めします。
キー コンテナーのベスト プラクティスの詳細については、「Key Vault を使用するためのベスト プラクティス」を参照してください。
構成と格納
シークレット値でデータベースまたはサービスにアクセスするために必要な資格情報を保存します。 ユーザー名/パスワードなどの複合資格情報の場合は、接続文字列または JSON オブジェクトとして保存できます。 管理に必要なその他の情報は、ローテーション構成などのタグに保存する必要があります。
シークレットの詳細については、「Azure Key Vault のシークレットについて」を参照してください。
シークレットのローテーション
アプリケーションのライフサイクル全体を通して、シークレットは環境変数または構成設定としてアプリケーションのメモリに頻繁に格納され、結果として望ましくない露出の影響を受けやすくなります。 シークレットは漏えいや露出の影響を受けやすいため、ローテーションを頻繁に行う (少なくとも 60 日ごと) ことが重要です。
シークレットのローテーション プロセスの詳細については、「2 セットの認証資格情報があるリソースを対象にシークレットのローテーションを自動化する」を参照してください。
アクセスとネットワークの分離
コンテナーに対するアクセス権を持つ IP アドレスを指定することで、コンテナーの公開を縮小できます。 アプリケーションと関連サービスのみがコンテナー内のシークレットにアクセスできるようにファイアウォールを構成して、攻撃者がシークレットにアクセスしにくくします。
ネットワーク セキュリティの詳細については、「Azure Key Vault のネットワーク設定を構成する」を参照してください。
また、アプリケーションにシークレットの読み取りアクセス許可のみを与えることにより、最低特権アクセスに従う必要があります。 シークレットへのアクセスは、アクセス ポリシーか、Azure ロールベースのアクセス制御で制御できます。
Azure Key Vault でのアクセス制御の詳細については、次を参照してください。
サービスの制限とキャッシュ
Key Vault は、最初は Azure Key Vault サービスの制限で指定されたスロットリング制限を使用して作成されました。 スループット率を最大化するために推奨される 2 つのベスト プラクティスは、以下のとおりです。
- 少なくとも 8 時間は、アプリケーションにシークレットをキャッシュする。
- サービスの制限を超えた場合のシナリオを処理するため、エクスポネンシャル バックオフ再試行ロジックを実装する。
スロットリングのガイダンスについて詳しくは、「Azure Key Vault のスロットル ガイダンス」を参照してください。
監視
シークレットへのアクセスとそのライフサイクルを監視するには、Key Vault のログ記録を有効します。 すべてのコンテナー内のすべてのシークレット アクティビティを 1 か所で監視するには、Azure Monitor を使用します。 または、Azure Logic Apps や Azure Functions との統合が容易な Azure Event Grid を使用して、シークレットのライフサイクルを監視します。
詳細については、次を参照してください。
バックアップと消去保護
シークレットの悪意によるまたは不注意による削除から保護するには、消去保護を有効にします。 消去保護が不可能なシナリオでは、他のソースから再作成できないバックアップ シークレットをお勧めします。