MicrosoftはAzure Cosmos DBで、アカウントのキーを回す(作り直す)前に、そのキーがまだ使われていないかを確かめる「Safe Key Rotation」を正式に提供しました。直近12時間に使われたキーは、再生成もキーでの認証の無効化も止めてくれます。使用中のキーを回してアプリが止まる事故を防ぎ、キーをやめてEntra IDの認証に移る前の確認にも使えます。
Azureの更新情報。Cosmos DBのSafe Key Rotationが正式に(英語)出典: Microsoft Azure「Generally Available: Azure Cosmos DB Safe Key Rotation」(引用)
何ができるようになったか
Azureの更新情報(2026年10月21日掲載)によると、各アカウントのキーが最後に使われた時刻の情報を見られるようになり、回したり退役させたりする前に、使用中のキーを見分けられます。Microsoft Learnの説明書(10月20日更新)は、仕組みを次のように説明しています。
- キーの再生成や、ローカル認証(キーでの認証)の無効化の前に、確認が走る
- 直近12時間にそのキーが使われていれば、要求を止めて、まだ使われているという誤りを返す
- 止めたときは、キーは何も変わらず、アプリはそのまま動き続ける
- Cosmos DBは、もともとすべてのアカウントでキーの使用を記録している。有効にすると、その記録で止めるようになる
対象は、NoSQL、MongoDB、Apache Cassandra、Apache Gremlin、Tableのアカウントです。説明書は、とくに役に立つ場面として、キーからEntra IDへ全部移したい場合、月1回や年1回だけ動く処理がキーに頼っている場合、チームをまたいでキーを共有していて誰が使っているか見えにくい場合を挙げています。
有効にする方法
機能は既定では効かないため、アカウントごとに有効にします。
- Azureのポータル: Cosmos DBのアカウントの「Features(機能)」で、Safe Key Rotationの切り替えを入れる
- Azure CLI: az cosmosdb updateで、capabilitiesにEnableAccountKeysLastUsageCheckInDisableLocalAuthとEnableKeyCheckBeforeRegenerationPreviewを足す。az cosmosdb showで、2つが出ていれば有効
キーの回し方の順番は、これまでと同じです。アプリが主キーを使っているなら、まず副キーを作り直して動くことを確かめ、アプリを副キーに切り替えてから、主キーを作り直します。キーの作り直しには、アカウントの大きさによって1分から数時間かかるとしています。
使用中と判定されたら
使用中と判定されたときの扱い(Microsoft Learn・英語)。直近12時間の使用で止める出典: Microsoft Learn「Rotate keys for Azure Cosmos DB for NoSQL」(引用)
使用中と判定されても回したいときは、アプリをもう一方のキーかEntra IDの認証に移し、12時間使われなくなってから作り直します。急ぐ場合は、要求に「SkipAccountKeysLastUsageCheck」をtrueで付けて確認を飛ばせますが、Microsoftは安全だと確かなときだけにするよう書いています。
キーが漏れたときの緊急の取り替えは、使用中でも止めるべきなので、確認を飛ばすことになります。止まるアプリより、漏れたキーを使える状態にしておく危険のほうが大きいからです。ふだんの計画的な取り替えでは確認を効かせ、緊急時の手順では確認を飛ばす、と使い分けを決めておくと迷いません(当社の見立て)。
キーより、Entra IDの認証へ
説明書の冒頭で、Microsoftは、本番ではキーのように認証情報を直に扱うやり方は勧めないとし、Entra IDを使った役割ベースのアクセス制御(RBAC)を案内しています。Safe Key Rotationは、キーでの認証を止める前に「もう誰もキーを使っていない」ことを確かめる道具として使えます。
鍵や認証情報が盗まれて、そこから大量のデータに届く事故は、10月も続いています(日経新聞に不正アクセス 約183万件が流出 認証情報の窃取が起点など)。Cosmos DBのキーは、1つでアカウントのデータにまとめて届くため、回さずに長く使い続けるほど、漏れたときの被害が大きくなります(当社の見立て)。
影響する会社・しない会社
- 影響する: Azure Cosmos DBを使い、アプリや処理がアカウントのキー(主キー・副キー)で接続している会社です。キーを回す前の確認に使えます。
- 影響する: キーをやめて、Entra IDの認証に移したい会社です。キーでの認証を止める前に、使っている処理が残っていないかを確かめられます。
- 影響しない: Cosmos DBを使っていない会社、またはすでにローカル認証を止めて、Entra IDの認証だけにしている会社です。
情シスが今日やること
- Cosmos DBのアカウントと、キーの使い方を洗い出す。 どのアプリや処理が、どのアカウントのどのキーで接続しているかを一覧にします。月次や年次の処理、他部署や委託先が持つキーも含めます。
- Safe Key Rotationを有効にする。 本番のアカウントで、ポータルの「Features」かCLIで有効にします。有効にしてもキーは変わらないため、動いているアプリへの影響はありません。
- 計画的にキーを回す。 副キーを作り直す→アプリを切り替える→主キーを作り直す、の順で回します。使用中と判定されたら、切り替え忘れのアプリが残っている合図です。
- 緊急時の手順を決める。 キーが漏れたときは確認を飛ばして(SkipAccountKeysLastUsageCheck)すぐ作り直す、と手順書に書き、判断する人を決めます。
- Entra IDの認証への移行を計画する。 キーで接続しているアプリを、マネージドIDなどEntra IDの認証に移す順番を決めます。全部移ったら、Safe Key Rotationで使われていないことを確かめてから、ローカル認証を止めます。