注意
本記事の内容は、Azure Key Vault ストレージ アカウント キー機能により網羅されており古い情報となります。以下は参考情報として残してあります。
概要
Azure Storage アカウントは 512 ビットの文字列からなる 2 つのキー(Primary Key, Secondary Key)で管理されていてます。ストレージ アカウント名と、これらいずれか 1 つのキーを利用して、ストレージ アカウントに保存されているデータ オブジェクト (BLOB、テーブル内のエンティティ、キュー メッセージ、Azure ファイル共有上のファイルなど) へアクセスできます。
Key の漏えいと再生成
アカウント キーが判れば Azure Storage の全データにアクセスが可能となり、キーの漏洩は深刻なデータ漏えいにつながる可能性があります。このためアカウント キーには柔軟な再生成機能が備わっています。以下のようなキーの漏洩に関する事案が疑われる場合には、ストレージ管理者はキーの再生成を実施しデータの漏洩を防ぐ事が可能です。
- キー情報を知っている運用・開発チームのメンバーがチームから外れた場合
- ハッキングなどによりキー情報の漏洩が疑われる場合
Key が 2 つある理由
管理用のキーが 2 つある理由は、キーの再生成を実施する際に既存アプリケーション(Primary Key を利用)への影響を最小限にするためです。キーの再生成は、Storage サービス全体に同期されるまで最大 10 分程度かかる可能性があります。このためキーの再生成は次のプロセスで実施する事をお勧めします。
1. Azure ポータルで Secondary Key を再生成します。
2. Primary Key を利用している既存アプリケーションのキーを Secondary Key に変更します。アプリケーションをテストし発行します。
3. Azure ポータルで Primary Key を再生成します。
上記のステップにて、アプリケーションのダウンタイムを最小限に抑えながら 2 つのキーの再生成が実施できますが、これにはアプリケーションの改修と再発行などの手間を要します。Azure Key Vault を利用する事で、よりセキュアにこれらの漏洩対策を実施する事が可能です。
Azure Key Vault による Key の漏洩対策
Azure Storage アカウント キーの漏洩対策として、Key をシークレットとして Azure Key Vault に格納し、アプリケーションではキーを保持せず格納されたキーを必要に応じて取得する方法があります。この方法ではキーを再生成した場合でも、アプリケーションで必要になるたびにキーを読み取るか、メモリにキャッシュし、使用に失敗した場合に、Azure Key Vault からキーを取得し直すことができます。
Azure Key Vault を使用する事で、Azure Active Directory を使用してキーへのアクセス権を制御することが可能になります。次の図では、Azure Key Vault に格納されたキーを参照権限のあるユーザーのサービスが読み取り、読み取ったキーを利用してストレージへアクセスしている流れとなります。またこのケースでは、Azure Automation により、1時間毎にキーの再生成をすることで、キーの漏洩を防ぐ仕組みを取り入れています。
参考資料:Say goodbye to key management – manage access to Azure Storage data using Azure AD