Key Vault のシークレット
全員と共有されているシークレットは、シークレットではありません。 接続文字列、セキュリティ トークン、認定資格証、パスワードなどの機密事項をご自身のコードに格納することは、自分の意図とは異なる目的でその機密事項を使うよう他の人を招待するようなものです。 このようなデータを、ご自身の Web 構成に格納することさえも悪いことです。基本的に、ソース コードや Web サーバーにアクセスできるすべての人に、ご自身のプライベート データへのアクセスを許可することになります。
これらのシークレットは、必ず Azure Key Vault に格納してください。
Azure Key Vault とは
Azure Key Vault は "シークレット ストア"、つまりアプリケーション シークレットを格納するための一元的なクラウド サービスです。 Key Vault では、一元管理場所にアプリケーション シークレットを保持し、セキュリティで保護されたアクセス、アクセス許可の制御、アクセスのログ記録を提供することで、機密データの安全性を確保できます。
シークレットは個別の "コンテナー" に格納されます。このコンテナーそれぞれに、アクセスを制御するための独自の構成とセキュリティ ポリシーが含まれます。 ご自身のデータには、REST API、またはほとんどの言語で利用可能なクライアント SDK を使用してアクセスできます。
重要
Key Vault は、サーバー アプリケーションの構成のシークレットを格納するよう設計されています。 アプリのユーザーに属するデータを格納するものではなく、アプリのクライアント側の部分で使用することはできません。 このことは、そのパフォーマンス特性、API、およびコスト モデルに反映されています。
ユーザー データは、Transparent Data Encryption を使用する Azure SQL データベース、Storage Service Encryption を使用するストレージ アカウントなど、別の場所に保存する必要があります。 アプリケーションがこれらのデータストアにアクセスするために使用するシークレットを Key Vault に保管することができます。
自分のシークレットに Key Vault を使用する理由
キー管理とシークレット格納は複雑で、手動で行うとエラーが発生しやすい作業です。 手動による認定資格証ローテーションは、数時間、あるいは数日にわたって、その認定資格証を使えなくなるおそれがあることを意味します。 前述のように、接続文字列を構成ファイルまたはコード リポジトリに保存すると、ご自身の資格証明が盗まれる可能性があります。
Key Vault には、ユーザーが、接続文字列、シークレット、パスワード、認定資格証、アクセス ポリシー、ファイル ロック (Azyre の項目を読み取り専用に設定)、およびオートメーション スクリプトを格納できます。 また、アクセスとアクティビティもログされ、サブスクリプションのアクセス制御 (IAM) を監視できます。 これには、診断、メトリック、アラート、トラブルシューティングの各機能もあり、必要なアクセスを確保できます。
Azure Key Vault の使用について詳しくは、「Azure Key Vault を使用してサーバー アプリのシークレットを管理する」で学習してください。
まとめ
Azure Key Vault を使ってシークレットを管理すれば、資格証明の盗難、手動によるキー ローテーション、認定資格証の更新は過去のものになります。