Azure Storage 内のデータへのアクセスを承認する
ストレージ アカウントのデータにアクセスするたびに、クライアント アプリケーションは HTTP/HTTPS で Azure Storage に要求を行います。 既定では、Azure Storage のすべてのリソースがセキュリティで保護されており、セキュリティ保護されたリソースへのすべての要求には承認される必要があります。 認可により、クライアント アプリケーションにはストレージ アカウント内の特定のリソースにアクセスするための適切なアクセス許可があることが保証されます。
重要
最適なセキュリティのため、Microsoft では、可能な限り、Microsoft Entra ID とマネージド ID を使って、BLOB、キュー、テーブルのデータに対する要求を認可することをお勧めします。 Microsoft Entra ID とマネージド ID を使った認可によって、共有キー認可よりもセキュリティが向上し、使いやすくなります。 マネージド ID について詳しくは、「Azure リソースのマネージド ID とは」をご覧ください。 .NET アプリケーションでマネージド ID を有効にして使用する方法の例については、.NET での Azure リソースに対する Azure でホストされたアプリの認証に関する記事をご覧ください。
オンプレミス アプリケーションなど、Azure の外部でホストされているリソースの場合は、Azure Arc 経由でマネージド ID を使用できます。たとえば、Azure Arc 対応サーバーで実行されているアプリでは、マネージド ID を使用して Azure サービスに接続できます。 詳細については、「Azure Arc 対応サーバーでの Azure リソースに対して認証を行う」を参照してください。
Microsoft では、Shared Access Signature (SAS) を使うシナリオにはユーザー委任 SAS を使うことをお勧めします。 ユーザー委任 SAS は、アカウント キーの代わりに Microsoft Entra 資格情報で保護されます。 Shared Access Signature について詳しくは、Shared Access Signature によるデータへの制限付きアクセスの許可に関する記事をご覧ください。 .NET でユーザー委任 SAS を作成および使用する方法の例については、「.NET を使用して BLOB 用のユーザー委任 SAS を作成する」を参照してください。
データ操作の認可
次のセクションでは、各 Azure Storage サービスの認可サポートと推奨事項について説明します。
次の表に、BLOB でサポートされている認可オプションの情報を示します。
認可オプション | ガイダンス | 推奨事項 |
---|---|---|
Microsoft Entra ID | Microsoft Entra ID を使用して Azure Storage データへのアクセスを承認する | Microsoft では、BLOB リソースへの要求を承認するには、マネージド ID と Microsoft Entra ID を使用することをお勧めします。 |
共有キー (ストレージ アカウント キー) | 共有キーを使用して承認する | Microsoft では、ストレージ アカウントに対して共有キーによる認可を禁止することをお勧めします。 |
Shared Access Signature (SAS) | Shared Access Signatures (SAS) の使用 | SAS の認可が必要な場合、Microsoft ではユーザー委任 SAS を使用して、BLOB リソースへの限定的な委任アクセスを行うことをお勧めします。 |
匿名読み取りアクセス | 概要: BLOB データの匿名読み取りアクセスの修復 | Microsoft では、すべてのストレージ アカウントに対して匿名アクセスを無効にすることをお勧めします。 |
ローカル ユーザーの Storage | SFTP でのみ、サポートされます。 詳細については、「SFTP クライアントの Azure Blob Storage へのアクセスを承認する」を参照してください。 | オプションについてはガイダンスをご覧ください。 |
次のセクションでは、Azure Storage の認可オプションについて簡単に説明します。
共有キー認証: BLOB、ファイル、キュー、およびテーブルに適用されます。 共有キーを使用するクライアントは、ストレージ アカウントのアクセス キーを使用して署名されたすべての要求にヘッダーを渡します。 詳細については、共有キーによる承認に関するページを参照してください。
ストレージ アカウントのアクセス キーは慎重に使用する必要があります。 アクセス キーを持つすべてのユーザーは、ストレージ アカウントに対する要求を承認でき、実質的にすべてのデータにアクセスできます。 Microsoft では、ストレージ アカウントに対して共有キーによる認可を禁止することをお勧めします。 共有キーの承認が禁止されている場合、クライアントは、そのストレージ アカウントのデータに対する要求を承認するために Microsoft Entra ID またはユーザー委任 SAS を使用する必要があります。 詳細については、Azure ストレージ アカウントの共有キーによる認可の禁止に関するページを参照してください。
BLOB、ファイル、キュー、およびテーブル用の共有アクセス署名。 共有アクセス署名 (SAS) には、ストレージ アカウント内のリソースに対する、署名された URL を介した制限付きの委任アクセス機能があります。 署名された URL は、リソースに付与されるアクセス許可と、署名が有効な間隔を指定します。 サービス SAS またはアカウント SAS はアカウント キーで署名されます。一方、ユーザー委任 SAS は Microsoft Entra 資格情報で署名され、BLOB にのみ適用されます。 詳細については、共有アクセス署名 (SA) の使用 を参照してください。
Microsoft Entra 統合: BLOB、キュー、テーブル リソースに適用されます。 Microsoft では、マネージド ID と Microsoft Entra 資格情報を使用して、可能な限りデータへの要求を承認し、最適なセキュリティと使いやすさを実現することをお勧めします。 Microsoft Entra 統合の詳細については、BLOB、キュー、またはテーブル リソースに関する記事を参照してください。
Azure のロールベースのアクセス制御 (Azure RBAC) を使用して、ストレージ アカウント内の BLOB、キュー、テーブル リソースへのセキュリティ プリンシパルのアクセス許可を管理できます。 Azure の属性ベースのアクセス制御 (ABAC) を使用して、BLOB リソースの Azure ロールの割り当てに条件を追加することもできます。
RBAC の詳細については、「Azure ロールベースのアクセス制御 (Azure RBAC) とは」を参照してください。
ABAC の詳細については、「Azure の属性ベースのアクセス制御 (Azure ABAC) とは」を参照してください。 ABAC 機能の状態については、「Azure Storage の ABAC 条件機能の状態」を参照してください。
Microsoft Entra Domain Services 認証: Azure Files に適用されます。 Azure Files では、Microsoft Entra Domain Services を介したサーバー メッセージ ブロック (SMB) の ID ベースの承認がサポートされています。 Azure RBAC を使用して、ストレージ アカウント内の Azure Files リソースへのクライアントのアクセスを細かく制御できます。 ドメイン サービスを使用した Azure Files 認証の詳細については、「SMB アクセスの Azure Files ID ベース認証オプションの概要」を参照してください。
オンプレミス Active Directory Domain Services (AD DS、またはオンプレミス AD DS) 認証: Azure Files に適用されます。 Azure Files では、AD DS を使用した SMB での ID ベースの承認がサポートされています。 AD DS 環境は、オンプレミス マシンまたは Azure VM でホストできます。 Files への SMB アクセスは、ドメインに参加しているマシン (オンプレミスまたは Azure) からの AD DS 資格情報を使用してサポートされます。 共有レベルのアクセス制御には Azure RBAC の組み合わせを、ディレクトリまたはファイル レベルのアクセス許可の適用には NTFS DACL を使用できます。 ドメイン サービスを利用した Azure Files 認証に関する詳細については、概要のページを参照してください。
匿名読み取りアクセス: BLOB リソースに適用されます。 このオプションは推奨されません。 匿名アクセスが構成されている場合、クライアントは承認なしで BLOB データを読み取ることができます。 すべてのストレージ アカウントに対して匿名アクセスを無効にすることをお勧めします。 詳細については、「概要: BLOB データの匿名読み取りアクセスの修復」を参照してください。
Storage ローカル ユーザー: SFTP を使用した BLOB または SMB を使用したファイルに適用されます。 Storage ローカル ユーザーは、承認のためのコンテナー レベルのアクセス許可をサポートします。 SFTP でストレージ ローカル ユーザーを使用する方法の詳細については、SSH ファイル転送プロトコル (SFTP) を使用して Azure Blob Storage に接続するを参照してください。
アクセス キーの保護
ストレージ アカウント アクセス キーは、ストレージ アカウントのデータと SAS トークン生成機能へのフル アクセスを提供します。 アクセス キーは常に慎重に保護してください。 キーを安全に管理およびローテーションするには、Azure Key Vault を使用します。 共有キーへのアクセスにより、ストレージ アカウントのデータへのフル アクセスがユーザーに許可されます。 共有キーへのアクセスは慎重に制限し、監視する必要があります。 Microsoft Entra ID ベースの認可を使用できないシナリオでは、アクセス範囲が制限されたユーザー委任 SAS トークンを使用します。 アクセス キーをハードコーディングしたり、他のユーザーがアクセスできるプレーンテキストで保存したりしないでください。 キーが侵害された可能性があると思われる場合は、キーをローテーションしてください。
重要
ユーザーが共有キーを使用してストレージ アカウント内のデータにアクセスできないようにするには、ストレージ アカウントに対する共有キーの認可を禁止します。 セキュリティのベスト プラクティスとして、必要最小限の特権でデータに細かくアクセスすることをお勧めします。 OAuth をサポートするシナリオでは、マネージド ID を使用した Microsoft Entra ID ベースの認可を使う必要があります。 SMB 経由の Azure Files には Kerberos または SMTP を使用する必要があります。 REST 経由の Azure Files の場合は、SAS トークンを使用できます。 共有キー アクセスは、不注意による使用を防ぐために、必要でない場合は無効にする必要があります。 詳細については、Azure ストレージ アカウントの共有キーによる認可の禁止に関するページを参照してください。
Microsoft Entra の条件付きアクセス ポリシーを使って Azure Storage アカウントを保護するには、ストレージ アカウントに対する共有キー認可を禁止する必要があります。
共有キー アクセスが無効になっていて、診断ログに共有キーの認可が報告されている場合は、ストレージへのアクセスに信頼されたアクセスが使用されていることを示しています。 詳細については、「Microsoft Entra テナントに登録されているリソースへの信頼されたアクセス」を参照してください。
次のステップ
- Microsoft Entra ID を使用して、BLOB、キュー、またはテーブル リソースへのアクセスを承認します。
- 共有キーを使用して承認する
- 共有アクセス署名 (SAS) を使用して Azure Storage リソースへの制限付きアクセスを許可する