ストレージ アカウント アクセス キーを管理する

ストレージ アカウントを作成すると、Azure により 512 ビットのストレージ アカウント アクセス キーが 2 つ生成されます。 これらのキーは、共有キー認証を使用してストレージ アカウント内のデータへのアクセスする際、認証に使用されます。

アクセスキーの管理には Azure Key Vault を使用し、キーのローテーションと再生成は定期的に行うことをお勧めします。 Azure Key Vault を使用すると、アプリケーションを中断することなく簡単にキーをローテーションできます。 また、キーを手動でローテーションすることもできます。

アクセス キーの保護

ストレージ アカウントのアクセス キーは、ストレージ アカウントの root パスワードに似ています。 アクセス キーは常に慎重に保護してください。 キーを安全に管理およびローテーションするには、Azure Key Vault を使用します。 アクセス キーを他のユーザーに配布したり、ハードコーディングしたり、他のユーザーがアクセスできるプレーンテキストで保存したりしないでください。 キーが侵害された可能性があると思われる場合は、キーをローテーションしてください。

注意

BLOB およびキューのデータに対する要求を承認するには、共有キーではなく、可能であれば Azure Active Directory (Azure AD) を使用することをお勧めします。 Azure AD では、共有キーよりも優れたセキュリティと使いやすさが実現されます。 Azure AD を使用したデータへのアクセスの承認の詳細については、「Azure Active Directory を使用して BLOB とキューへのアクセスを承認する」を参照してください。

アカウントのアクセス キーを表示する

アカウント アクセス キーは、Azure portal、PowerShell、または Azure CLI を使用して表示したり、コピーしたりできます。 Azure portal にはストレージ アカウントの接続文字列も用意されているのでコピーできます。

Azure portal からストレージ アカウントのアクセス キーまたは接続文字列を表示およびコピーするには:

  1. Azure Portal のストレージ アカウントに移動します。

  2. [設定][アクセス キー] を選択します。 アカウント アクセス キーと、各キーの完全な接続文字列が表示されます。

  3. [key1][キー] 値を見つけ、 [コピー] ボタンをクリックしてアカウント キーをコピーします。

  4. あるいは、接続文字列全体をコピーできます。 [Key1][接続文字列] の値を見つけて [コピー] ボタンをクリックし、接続文字列をコピーします。

    Azure portal でアクセス キーを表示する方法を示したスクリーンショット

2 つのキーのいずれかを使用して Azure Storage にアクセスすることもできますが、一般的には、最初のキーを使用し、キーのローテーション時に 2 番目のキーの使用を予約することをお勧めします。

アカウントのアクセス キーを表示または読み込むには、ユーザーがサービス管理者であるか、Microsoft.Storage/storageAccounts/listkeys/action を含む Azure ロールが割り当てられている必要があります。 このアクションが含まれる Azure 組み込みロールには、所有者共同作成者、および ストレージ アカウント キー オペレーターのサービス ロール があります。 サービス管理者ロールの詳細については、従来のサブスクリプション管理者ロール、Azure ロール、および Azure AD ロールに関する記事を参照してください。 Azure Storage 用の組み込み RBAC ロールの詳細については、「Azure RBAC の Azure 組み込みロール」の「ストレージ」セクションを参照してください。

Azure Key Vault を使用してアクセスキーを管理する

Microsoft では、Azure Key Vault を使用して、アクセスキーの管理とローテーションをするようお勧めします。 アプリケーションは、Key Vault 内のキーに安全にアクセスできるので、アプリケーションコードと一緒に格納することは避けてください。 キー管理に Key Vault を使用する方法の詳細については、次の記事を参照してください:

アクセス キーを手動でローテーションする

Microsoft では、ストレージアカウントのセキュリティを確保するために、アクセスキーを定期的にローテーションすることをお勧めします。 可能であれば、Azure Key Vault を使用してアクセスキーを管理してください。 Key Vault を使用していない場合は、キーを手動でローテーションする必要があります。

キーをローテーションさせることができるように、2 つのアクセス キーが割り当てられます。 2 つのキーで、アプリケーションはプロセス全体を通じて Azure Storage へのアクセスを維持します。

警告

アクセス キーの再生成は、ストレージ アカウント キーに依存するあらゆるアプリケーションまたは Azure サービスに影響を与える可能性があります。 メディア サービス、クラウド、モバイル アプリケーション、Azure Storage 向けのグラフィカル ユーザー インターフェイス アプリケーション (Azure Storage Explorer など) を含む、アクセス キーを使用してストレージ アカウントにアクセスするクライアントは新しいキーを使用するように更新する必要があります。

アクセス キーのローテーションを手動で行うことを検討している場合は、キーの有効期限ポリシーを設定し、Azure Monitor からクエリを使用して、アクセス キーをローテーションするタイミングを判断することをお勧めします。

キーの有効期限ポリシーを作成する

Azure portal を使用してキーの有効期限ポリシーを設定する機能は、まだ提供されていません。 PowerShell または Azure CLI を使用してください。

ポリシー違反を照会する

Azure Log Analytics ワークスペースにログを送信する診断設定を作成すれば、Azure Monitor ログ クエリを使用して、キーの有効期限が切れているかどうかを調べることができます。

キーの有効期限が切れているかどうかを調べるには、 [ログ検索] バーに次のクエリを入力します。

StorageBlobLogs | where KeyExpiryStatus startsWith "Policy Violated". 

有効期限が近づいているかどうかを調べることのできるクエリを作成することもできます。 この情報を取得するクエリは次のとおりです。

resources  
| where type =~ 'microsoft.storage/storageAccounts' 
| extend days = datetime_diff('day', now(), todatetime(parse_json(properties).keyCreationTime)) 
| extend KeyExpiryStatus = iff(days > 180, "Policy Violated", "") 
| project name, days, KeyExpiryStatus  

アクセス キーをローテーションする

Azure portal でストレージ アカウントのアクセス キーをローテーションさせるには:

  1. ストレージ アカウントのセカンダリ アクセス キーを参照するようにアプリケーション コードの接続文字列を更新します。

  2. Azure Portal のストレージ アカウントに移動します。

  3. [設定][アクセス キー] を選択します。

  4. ストレージ アカウントのプライマリ アクセス キーを再生成するには、プライマリ アクセス キーの隣にある [再生成] ボタンを選択します。

  5. 新しいプライマリ アクセス キーを参照するようにアプリケーション コードの接続文字列を更新します。

  6. 同様に、セカンダリ アクセス キーを再生成します。

注意

Microsoft では、すべてのアプリケーションで、同時にいずれかのキーのみを使用することをお勧めします。 キー 1 を使用する場所とキー 2 を使用する場所がある場合、キーを循環させるときに、一部のアプリケーションがアクセス権を失います。

アカウントのアクセス キーをローテーションさせるには、ユーザーがサービス管理者であるか、Microsoft.Storage/storageAccounts/regeneratekey/action を含む Azure ロールが割り当てられている必要があります。 このアクションが含まれる Azure 組み込みロールには、所有者共同作成者、および ストレージ アカウント キー オペレーターのサービス ロール があります。 サービス管理者ロールの詳細については、従来のサブスクリプション管理者ロール、Azure ロール、および Azure AD ロールに関する記事を参照してください。 Azure Storage 用の Azure 組み込みロールの詳細については、Azure RBAC の Azure 組み込みロールに関するページの「ストレージ」セクションを参照してください。

次のステップ