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

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

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

アクセス キーの保護

ストレージ アカウント アクセス キーは、ストレージ アカウントの構成とデータへのフル アクセスを提供します。 アクセス キーは常に慎重に保護してください。 キーを安全に管理およびローテーションするには、Azure Key Vault を使用します。 共有キーへのアクセスにより、ストレージ アカウントの構成とそのデータへのフル アクセス権がユーザーに付与されます。 共有キーへのアクセスは慎重に制限し、監視する必要があります。 Microsoft Entra ID ベースの認可を使用できないシナリオでは、アクセス範囲が制限された SAS トークンを使用します。 アクセス キーをハードコーディングしたり、他のユーザーがアクセスできるプレーンテキストで保存したりしないでください。 キーが侵害された可能性があると思われる場合は、キーをローテーションしてください。

重要

Microsoft では、BLOB、キュー、テーブルのデータに対する要求を認可する場合、アカウント キー (共有キー認可) を使うのではなく、可能であれば Microsoft Entra ID を使うことをお勧めします。 Microsoft Entra ID を使った認可によって、共有キー認可よりもセキュリティが向上し、使いやすくなります。 アプリケーションから Microsoft Entra 認可を使う方法について詳しくは、Azure サービスで .NET アプリケーションを認証する方法に関するページを参照してください。 SMB Azure ファイル共有の場合、Microsoft では、オンプレミスの Active Directory Domain Services (AD DS) 統合または Microsoft Entra Kerberos 認証を使用することをお勧めします。

ユーザーが共有キーを使用してストレージ アカウント内のデータにアクセスできないようにするには、ストレージ アカウントに対する共有キーの認可を禁止します。 セキュリティのベスト プラクティスとして、必要最小限の特権でデータに細かくアクセスすることをお勧めします。 OAuth をサポートするシナリオでは、Microsoft Entra ID ベースの認可を使う必要があります。 SMB 経由の Azure Files には Kerberos または SMTP を使用する必要があります。 REST 経由の Azure Files の場合は、SAS トークンを使用できます。 共有キー アクセスは、不注意による使用を防ぐために、必要でない場合は無効にする必要があります。 詳細については、Azure ストレージ アカウントの共有キーによる認可の禁止に関するページを参照してください。

Microsoft Entra の条件付きアクセス ポリシーを使って Azure Storage アカウントを保護するには、ストレージ アカウントに対する共有キー認可を禁止する必要があります。

共有キー アクセスが無効になっていて、診断ログに共有キーの認可が報告されている場合は、ストレージへのアクセスに信頼されたアクセスが使用されていることを示しています。 詳細については、「サブスクリプションに登録されているリソースへの信頼されたアクセス」を参照してください。

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

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

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

  1. Azure portal で、ストレージ アカウントに移動します。

  2. [セキュリティとネットワーク] で、 [アクセス キー] を選択します。 アカウント アクセス キーと、各キーの完全な接続文字列が表示されます。

  3. [キーの表示] を選択して、アクセス キーと接続文字列を表示し、値をコピーするボタンを有効にします。

  4. [key1] の下で [キー] 値を見つけます。 [コピー] ボタンを選択してアカウント キーをコピーします。

  5. あるいは、接続文字列全体をコピーできます。 [key1] の下で [接続文字列] の値を見つけます。 [コピー] ボタンを選択して接続文字列をコピーします。

    Screenshot showing how to view access keys in the Azure portal

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

アカウントのアクセス キーを表示または読み込むには、ユーザーがサービス管理者であるか、Microsoft.Storage/storageAccounts/listkeys/action を含む Azure ロールが割り当てられている必要があります。 このアクションが含まれる Azure 組み込みロールには、所有者共同作成者、およびストレージ アカウント キー オペレーターのサービス ロールがあります。 サービス管理者ロールの詳細については、「Azure ロール、Microsoft Entra ロール、クラシック サブスクリプション管理者ロール」を参照してください。 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 など) を含む、アクセス キーを使用してストレージ アカウントにアクセスするクライアントは新しいキーを使用するように更新する必要があります。

さらに、アクセス キーをローテーションまたは再生成すると、そのキーに基づいて生成された SAS (Shared Access Signature) が取り消されます。 アクセス キーのローテーション後は、アプリケーションの中断を回避するために、アカウントサービスの SAS トークンを再生成する必要があります。 ユーザー委任 SAS トークンは Microsoft Entra 資格情報で保護されおり、キーのローテーションの影響を受けないことに注意してください。

アクセス キーを手動でローテーションする場合は、キーの有効期限ポリシーを設定してください。 詳細については、「キーの有効期限ポリシーを作成する」を参照してください。

キーの有効期限ポリシーを作成した後、Azure Policy を使用して、ストレージ アカウントのキーが推奨間隔内にローテーションされているかどうかを監視できます。 詳細については、「キーの有効期限ポリシー違反を確認する」を参照してください。

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

  1. ストレージ アカウントのセカンダリ アクセス キーを参照するようにアプリケーション コードの接続文字列を更新します。
  2. Azure Portal のストレージ アカウントに移動します。
  3. [セキュリティとネットワーク] で、 [アクセス キー] を選択します。
  4. ストレージ アカウントのプライマリ アクセス キーを再生成するには、プライマリ アクセス キーの隣にある [再生成] ボタンを選択します。
  5. 新しいプライマリ アクセス キーを参照するようにアプリケーション コードの接続文字列を更新します。
  6. 同様に、セカンダリ アクセス キーを再生成します。

注意

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

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

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

キーの有効期限ポリシーを使用すると、アカウント アクセス キーのローテーションのアラームを設定できます。 アラームは、指定された間隔が経過し、キーがまだローテーションされていない場合に表示されます。 キーの有効期限ポリシーを作成した後、ストレージ アカウントのコンプライアンスを監視して、アカウント アクセス キーが定期的にローテーションされるのを確認できます。

Note

キーの有効期限ポリシーを作成する前に、アカウント アクセス キーを少なくとも 1 回ローテーションする必要がある場合があります。

Azure portal で、キーの有効期限ポリシーを作成するには:

  1. Azure portal で、ストレージ アカウントに移動します。
  2. [セキュリティとネットワーク] で、 [アクセス キー] を選択します。 アカウント アクセス キーと、各キーの完全な接続文字列が表示されます。
  3. [交換リマインダーの設定] ボタンを選択します。 [交換リマインダーの設定] ボタンが灰色表示されている場合は、各キーを回転する必要があります。 「アクセス キーを手動で交換する」で説明されている手順に従って、キーを交換します。
  4. [アクセス キーを交換するためのリマインダーを設定する][キー交換リマインダーを有効にする] チェックボックスをオンにして、アラームの頻度を設定します。
  5. [保存] を選択します。

Screenshot showing how to create a key expiration policy in the Azure portal

キーの有効期限ポリシー違反を確認する

Azure Policy を使用してストレージ アカウントを監視し、推奨される期間中にアカウント アクセス キーがローテーションされた状態を確認できます。 Azure Storage、ストレージ アカウントのアクセス キーの有効期限が切れていないか確認するための組み込みポリシーが提供されます。 組み込みポリシーの詳細については、「ストレージ アカウント キーが期限切れにならないようにする必要がある」を「組み込みのポリシー定義の一覧」で参照してください。

リソース スコープの組み込みポリシーを割り当てる

Azure portal で組み込みポリシーを適切なスコープに割り当てるには、次の手順に従います。

  1. Azure portal で [ポリシー] を検索し、Azure Policy ダッシュボードを表示します。

  2. [作成] セクションで [割り当て] を選択します。

  3. [ポリシーの割り当て] を選択します。

  4. [ポリシーの割り当て] ページの [基本] タブの [スコープ] セクションで、ポリシー割り当てのスコープを指定します。 [その他] ボタンを選択して、サブスクリプションとオプションのリソース グループを選択します。

  5. [ポリシー定義] フィールドで、[その他] ボタンを選択し、[検索] フィールドにストレージ アカウント キーを入力します。 [ストレージ アカウント キーが期限切れにならないようにする必要がある] という名前のポリシー定義を選択します。

    Screenshot showing how to select the built-in policy to monitor key rotation intervals for your storage accounts

  6. [確認と作成] を選択して、ポリシー定義を指定したスコープに割り当てます。

    Screenshot showing how to create the policy assignment

キーの有効期限ポリシーに対するコンプライアンスを監視する

キーの有効期限ポリシーに準拠するためにストレージ アカウントを監視するには、次の手順に従います。

  1. Azure Policy ダッシュボードで、ポリシーの割り当てで指定したスコープの組み込みポリシー定義を見つける。 [検索] ボックスで [ストレージ アカウント キーが期限切れにならないようにする必要がある] を検索し、組み込みのポリシーをフィルター処理できます。

  2. 目的のスコープを持つポリシー名を選択します。

  3. 組み込みポリシーの [ポリシーの割り当て] ページで、[コンプライアンスの表示] を選択します。 ポリシー要件を満たしていない、指定されたサブスクリプションとリソース グループ内のすべてのストレージ アカウントが、コンプライアンス レポートに表示されます。

    Screenshot showing how to view the compliance report for the key expiration built-in policy

ストレージ アカウントをコンプライアンスに取り込むには、アカウント アクセス キーをローテーションします。

次のステップ