Azure StorageのAccess Control Lists in Azure Data Lake Storage更新内容とACL確認ポイント

Azure StorageでAzure Data Lake StorageのACLを管理している場合、今回確認すべき結論は「すぐに権限が変わる破壊的変更ではないが、ACL設計で間違いやすいポイントを再点検すべき」という点です。2026年5月19日の更新情報として扱われている「Access Control Lists in Azure Data Lake Storage – Azure Storage」は、Microsoft Learn上では最終更新日が2026年5月18日、GitHub上のメタデータも ms.date: 05/18/2026 に更新されています。公開差分を見る限り、機能追加よりも説明の明確化と鮮度更新が中心です。(Microsoft Learn)

ただし、内容が軽いわけではありません。Azure Data Lake StorageのACLは、Azure RBAC、Microsoft Entra ID、SAS、サービスプリンシパル、ディレクトリ階層の実行権限が絡むため、設定ミスが「見えるはずのファイルが見えない」「制限したつもりなのにアクセスできる」といった障害につながります。この記事では、Access Control Lists in Azure Data Lake Storage – Azure Storageの更新内容を踏まえ、管理者・開発者が確認すべき設定、移行時の注意点、よくある失敗を実務目線で整理します。

目次

Azure Storageの「Access Control Lists in Azure Data Lake Storage」は何が変わるのか

今回の公式差分から読み取れる範囲では、Azure StorageやAzure Data Lake Storageのアクセス制御仕様そのものが大きく変更されたとは判断できません。主な変更は、ページタイトルの表記変更、更新日の変更、説明文の自然化、ACLの評価や権限設定に関する表現の明確化です。たとえば、サービスプリンシパルではアプリ登録のObject IDではなくサービスプリンシパルのObject IDを使う点、親ディレクトリのdefault ACL変更が既存の子項目に反映されない点、ファイル削除時にファイル自体のWrite権限が必須ではない点などが、より読みやすい表現に整理されています。(GitHub)

観点今回の更新で押さえるべき内容管理者・開発者への影響
仕様変更の有無公開差分上は、日付更新と文言整理が中心既存ワークロードの即時変更より、設定棚卸しが重要
ACLの対象ファイル・ディレクトリ単位のPOSIX風ACLコンテナー全体のRBACだけでは細粒度制御できない
認証方式Shared Keyや通常のSASではACLが効かないケースがあるACL検証時は認証方式を必ず確認する
サービスプリンシパルアプリ登録ではなくサービスプリンシパルのObject IDを使うADF、Databricks、バッチ処理の権限設定でミスが起きやすい
継承default ACLは新規作成される子項目に効く既存ファイル・既存ディレクトリには再帰適用が必要
権限評価Azure RBACで許可された権限をACLで後から制限できない「ACLを絞ったのにアクセスできる」原因になりやすい

つまり、今回の更新を「新機能の発表」として読むよりも、「Azure Data Lake StorageのACL運用ルールを再確認するタイミング」として扱うのが現実的です。

対象となる環境と読者

Access Control Lists in Azure Data Lake Storage – Azure Storageの内容が直接関係するのは、階層型名前空間、つまりHierarchical Namespace(HNS)を有効にしたストレージアカウントです。HNSが有効な場合、ACLによるアクセス制御が利用できます。HNSが無効な場合は、Azure RBACの承認ルールが引き続き適用されます。(Microsoft Learn)

特に確認すべき読者は、次のような立場の人です。

  • Azure StorageやAzure Data Lake Storageの権限設計を担当するクラウド管理者
  • Microsoft Entra IDグループやサービスプリンシパルを管理するID管理担当者
  • Azure Data Factory、Azure Databricks、Synapse、バッチ処理などからデータレイクへアクセスする開発者
  • Storage Explorer、Azure CLI、PowerShell、SDKでACLを変更する運用担当者
  • 監査対応や最小権限設計を担当するセキュリティ担当者

特に、ユーザー単位でACLを直接付与している環境、Shared KeyやSASでテストしている環境、既存ディレクトリに対して後からdefault ACLを変更している環境は、設定の見直し優先度が高いです。

ACLの基本は「ファイル・ディレクトリ単位の細かな権限制御」

Azure Data Lake StorageのACLは、POSIX風のアクセス制御リストです。各ファイル・各ディレクトリにACLがあり、ユーザー、グループ、サービスプリンシパル、マネージドIDなどのセキュリティプリンシパルに対して、Read、Write、Executeの権限を関連付けます。アクセス要求が発生すると、そのプリンシパルに必要な権限があるかをACLで確認します。(Microsoft Learn)

Azure RBACとACLは、役割が異なります。Azure RBACはストレージアカウントやコンテナー単位の大きな権限付与に向いており、ACLはディレクトリやファイル単位の細かな権限制御に向いています。Microsoft Learnのアクセス制御モデルでも、Azure RBACは粗い粒度、ACLは細かい粒度のアクセス許可として説明されています。(Microsoft Learn)

仕組み主なスコープ使いどころ
Azure RBACサブスクリプション、リソースグループ、ストレージアカウント、コンテナーデータ所有者、閲覧者、運用者など大枠の権限管理
Azure ABACAzure RBACの条件付き割り当てタグなどの属性条件を使った追加制御
ACLディレクトリ、ファイル特定フォルダーだけ読み取り可、特定処理だけ書き込み可などの細粒度制御

実務では、Azure RBACで「このストレージアカウントのデータにアクセスできる人」を絞り、ACLで「どのディレクトリやファイルにアクセスできるか」を絞る構成が基本です。

権限評価の順番を理解する:ACLでRBACの許可は打ち消せない

Azure Data Lake Storageの権限設計で最も重要なのは、評価順序です。Microsoftのアクセス制御モデルでは、セキュリティプリンシパルベースの承認時に、まずAzureロール割り当てを確認し、条件がある場合はABAC条件を評価し、その結果で明示的に許可されなかった場合にACLを評価します。十分なアクセス権がAzure RBACと条件で許可された場合、ACLは無視されます。(Microsoft Learn)

これは、次のような運用ミスにつながります。

たとえば、あるユーザーにストレージアカウント全体でStorage Blob Data Contributorを付与している場合、特定ディレクトリのACLを厳しくしても、そのRBAC権限によってアクセスできる可能性があります。「ACLで制限したのに読める」というトラブルでは、まずAzure RBACのスコープを確認してください。

逆に、Azure RBACを付与していない、またはRBACでは十分な許可が出ていない場合、ACLがアクセス可否を決めます。このとき、ファイルそのもののReadやWriteだけでなく、そこに到達するまでの各ディレクトリにExecute権限が必要です。ACLだけでファイルへの読み書きを許可する場合、コンテナーのルートから対象ファイルまでの各フォルダーにExecute権限が必要だと公式ドキュメントでも説明されています。(Microsoft Learn)

Read、Write、Executeの意味を実務で理解する

Azure Data Lake StorageのACLでは、Read、Write、Executeの意味がファイルとディレクトリで変わります。特にExecuteは、Linuxの実行ファイルのような意味ではなく、ディレクトリ階層をたどるための権限として理解する必要があります。

権限ファイルの場合ディレクトリの場合実務での注意点
Readファイル内容を読めるディレクトリ一覧にはReadとExecuteが必要一覧表示とファイル読み取りを混同しない
Writeファイルへ書き込み・追記できる子項目の作成にはWriteとExecuteが必要アップロード先ディレクトリには-WXが必要になりやすい
ExecuteData Lake Storageのファイルでは実質的な意味を持たない子項目へ到達するために必要深い階層のファイルでアクセス拒否が起きる典型原因

たとえば、/finance/2026/report.csv を読みたい場合、report.csvR-- があるだけでは足りません。//finance/finance/2026 に少なくとも --X が必要です。ディレクトリ一覧も見せたい場合は、対象ディレクトリに R-X が必要になります。

この考え方を知らないと、開発者は「ファイルにはRead権限があるのに403になる」と判断しがちです。実際には、途中のディレクトリにExecute権限がないケースが多くあります。

access ACLとdefault ACLの違い

Azure Data Lake Storageには、access ACLとdefault ACLの2種類があります。access ACLはファイルやディレクトリそのものへのアクセスを制御します。一方、default ACLはディレクトリに関連付けられるテンプレートで、その配下に新しく作成される子項目のACLを決めます。ファイルにはdefault ACLはありません。(Microsoft Learn)

重要なのは、親ディレクトリのdefault ACLを変更しても、すでに存在する子ファイルや子ディレクトリのACLは自動では変わらないことです。既存データに反映したい場合は、対象階層に対してACLを再帰的に追加、更新、削除する必要があります。(Microsoft Learn)

やりたいこと設定すべきACL注意点
既存ファイルへのアクセスを許可したいaccess ACL対象ファイルと親階層のExecuteを確認する
今後作成されるファイルにも同じ権限を付けたい親ディレクトリのdefault ACL既存ファイルには自動反映されない
既存配下すべてへ反映したい再帰的なACL更新失敗時の継続トークンや権限不足に注意する

新しいデータレイク領域を作るときは、先にディレクトリ構造とdefault ACLを設計してからデータ投入を始めるのが安全です。データ投入後にdefault ACLだけを変更しても、既存ファイルには期待した権限が付かないためです。

管理者が確認すべき設定

HNSが有効か確認する

ACLを前提にした設計は、HNSが有効なストレージアカウントで行います。HNSが無効なアカウントでは、ファイル・ディレクトリ単位のACLではなくAzure RBACを中心に考える必要があります。(Microsoft Learn)

確認観点は単純です。対象アカウントが「Azure Data Lake Storageとしてディレクトリ階層を扱うアカウント」なのか、「通常のBlob Storageとして使っているアカウント」なのかを分けて棚卸ししてください。

Azure RBACのスコープを確認する

ACLのトラブル調査では、まずAzure RBACを確認します。Storage Blob Data Owner、Storage Blob Data Contributor、Storage Blob Data Readerなどのデータアクセスロールが、サブスクリプション、リソースグループ、ストレージアカウント、コンテナーのどこで付与されているかを確認してください。Storage Blob Data OwnerはBlobコンテナーとデータへのフルアクセスに加え、所有者設定や全項目のACL変更が可能です。Storage Blob Data Contributorは読み書き削除が可能ですが、所有者設定はできず、所有している項目のACL変更に限られます。(Microsoft Learn)

特に避けたいのは、広いスコープで強いロールを付与したまま、ACLだけで細かく制限しようとする設計です。ACLは、すでにRBACで許可されたアクセスを拒否するための仕組みではありません。

ACLは個人ではなくMicrosoft Entraセキュリティグループに付与する

公式ドキュメントでは、ACLエントリの割り当て先としてMicrosoft Entraセキュリティグループを使うことが推奨されています。個人ユーザーや個別のサービスプリンシパルを直接ACLに追加すると、退職者対応、組織変更、アプリケーションの入れ替え時に、ディレクトリ階層全体へACL変更を再適用する必要が出やすくなります。(Microsoft Learn)

実務では、たとえば次のように分けます。

グループ例役割付与する権限例
LogsReadersログ分析を行うユーザーや分析基盤対象ディレクトリにr-x、ファイルにr--
LogsWritersログを投入するアプリや運用担当投入先ディレクトリにrwxまたは-wxを含む設計
DataLakeAdminsACL変更や所有者管理を行う管理者必要に応じてStorage Blob Data OwnerとACL管理権限

ただし、Microsoft Entra IDのグループメンバーシップが多すぎると、JWT内のグループ情報の制限によりData Lake Storage Gen2で予期しないパフォーマンス問題につながる可能性があるため、1つのセキュリティプリンシパルに対するグループメンバーシップは200未満に抑えることが推奨されています。(Microsoft Learn)

サービスプリンシパルは「アプリ登録のObject ID」ではなく「サービスプリンシパルのObject ID」を使う

Azure Data Factory、Azure Databricks、カスタムアプリ、CI/CDなどでサービスプリンシパルを使う場合、ACLに指定するIDを間違えやすいです。公式ドキュメントでは、ACL設定時にアプリ登録側のObject IDではなく、関連するサービスプリンシパルのObject IDを使うよう明記されています。(Microsoft Learn)

Azure CLIでは、アプリケーションIDを指定して次のように確認します。

az ad sp show --id <Your-App-ID> --query objectId

取得したObject IDを、named user相当のACLエントリとして追加します。アプリ登録画面で見えるObject IDをそのまま使うと、ACLを付けたつもりでも対象アプリがアクセスできない原因になります。

Shared Key、SAS、ユーザー委任SASの違いを確認する

ACLの検証でよくある落とし穴が、認証方式の混在です。ACLは同一テナント内のセキュリティプリンシパルに適用されます。Shared Key認証では呼び出し元にIDが紐づかないため、ACLによるプリンシパルベースの承認は行えません。通常のSASについても同様ですが、ユーザー委任SASでは、条件を満たす場合にPOSIX ACLチェックが行われます。(Microsoft Learn)

検証時は、「Azure Portalではアクセスできる」「CLIでは403」「アプリでは読める」といった結果だけで判断しないでください。どの認証方式で、どのプリンシパルとしてアクセスしているかを必ず揃える必要があります。

ACLエントリ数の上限を意識する

ACLは便利ですが、無制限に増やせるわけではありません。公式のアクセス制御モデルでは、ACLはファイルまたはディレクトリごとに32エントリ、実質的には28エントリが上限として説明されています。access ACLとdefault ACLはそれぞれ32エントリの制限を持ちます。(Microsoft Learn)

この上限を考えると、個人ユーザー単位のACL運用は長期的に破綻しやすいです。部門、職務、ワークロード単位のMicrosoft Entraセキュリティグループを作り、ACLにはグループを割り当てる設計が現実的です。

開発者・運用担当者が使う確認コマンド

Azure CLIでは、ACLの取得、設定、再帰更新が可能です。公式ドキュメントでは、Azure CLI 2.14.0以上、HNS有効のストレージアカウント、Storage Blob Data Ownerまたは対象項目の所有者権限などが前提として示されています。(Microsoft Learn)

ACLを確認する

az storage fs access show \
  -p my-directory \
  -f my-file-system \
  --account-name mystorageaccount \
  --auth-mode login

ファイル単位で確認する場合は、-pに対象ファイルのパスを指定します。

az storage fs access show \
  -p my-directory/upload.txt \
  -f my-file-system \
  --account-name mystorageaccount \
  --auth-mode login

ACLを設定する

ACLをsetする操作は、既存エントリを含むACL全体を置き換えます。特定プリンシパルだけを追加・変更したい場合は、置き換えではなくupdateを使うべきです。公式CLIドキュメントでも、ACLを設定すると全エントリを置換するため、既存エントリへ影響を与えたくない場合は更新操作を使うよう説明されています。(Microsoft Learn)

az storage fs access set \
  --acl "user::rw-,group::rw-,other::---" \
  -p my-directory \
  -f my-file-system \
  --account-name mystorageaccount \
  --auth-mode login

既存配下に再帰的に反映する

既存ディレクトリ配下へACLを広げる場合は、再帰操作を使います。

az storage fs access set-recursive \
  --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" \
  -p my-parent-directory/ \
  -f my-container \
  --account-name mystorageaccount \
  --auth-mode login

再帰処理では、実行途中の権限不足やランタイムエラーにも注意が必要です。公式CLIドキュメントでは、失敗時に継続トークンを使って処理を再開できること、ACLの再適用自体は悪影響なく行えることが説明されています。(Microsoft Learn)

Azure Portal、Storage Explorer、CLIの使い分け

ACL管理は、どのツールを使うかでできることが変わります。

ツール向いている作業注意点
Azure Portal個別のディレクトリやBlobのACL確認・簡易変更既存子項目への再帰適用はできない
Azure Storage ExplorerGUIでのACL管理、既存配下への伝播ACL管理にはMicrosoft Entra IDでのサインインが必要
Azure CLI自動化、再帰更新、CI/CD連携setupdateの違いに注意
SDKアプリケーションや運用ツールへの組み込み実行主体のIDとACLを明確にする

Azure Portalの公式ドキュメントでは、既存の子項目へACLを再帰的に適用することはPortalではできず、Storage Explorer、PowerShell、Azure CLI、またはSDKを使うよう案内されています。(Microsoft Learn)

Storage Explorerを使う場合、HNS有効アカウントのACL管理ではBlobエンドポイントとDFSエンドポイントの両方が使われます。プライベートエンドポイント構成では、blobdfsの2つのサブリソースに対するプライベートエンドポイントを確認してください。(Microsoft Learn)

移行・展開時の注意点

既存データへdefault ACLだけを設定して終わらせない

データレイク移行で多い失敗は、親ディレクトリにdefault ACLを設定して「配下にも反映された」と思い込むことです。default ACLは、設定後に新しく作られる子項目のテンプレートです。既存ファイルに反映したい場合は、access ACLの再帰更新が必要です。(Microsoft Learn)

展開手順としては、次の順番が安全です。

手順作業確認ポイント
事前設計ディレクトリ構造、管理グループ、読み書きグループを決める個人単位のACLを避ける
権限付与Azure RBACで大枠、ACLで細部を設定するRBACが広すぎないか確認する
default ACL設定新規作成される子項目向けに親へ設定する既存データには自動反映されない
既存データ更新必要に応じて再帰的にaccess ACLを更新する途中失敗時の再開方法を決める
検証実際のユーザー、サービスプリンシパル、マネージドIDでテストするShared Keyや通常SASでの検証結果と混同しない

削除権限は「ファイルのWrite」だけで判断しない

ファイル削除では、ファイルそのもののWrite権限が不要な場合があります。ディレクトリの権限が適切であれば削除できるため、削除可否は親ディレクトリ側のWriteとExecuteを含めて確認する必要があります。一方、ディレクトリとその中身を再帰的に削除する場合は、親ディレクトリにWriteとExecuteが必要で、削除対象のディレクトリおよび内部の各ディレクトリにRead、Write、Executeが必要です。ルートディレクトリ/は削除できません。(Microsoft Learn)

この仕様を知らないと、「ファイルにWriteを付けていないから削除されないはず」という誤った前提で設計してしまいます。削除制御を厳密に行う場合は、ファイル単体ではなく親ディレクトリの権限を確認してください。

maskによる有効権限を見落とさない

ACLエントリ上はrwxが付いているのにアクセスできない場合、maskが原因になることがあります。maskはnamed user、named group、owning groupのACLエントリに適用され、実際に承認で使われる権限の上限として働きます。リクエストごとにmaskを指定すると、既定のmaskを完全に上書きできます。(Microsoft Learn)

トラブルシュートでは、ACLエントリだけでなくeffective permissionを確認してください。特に、複数のツールやクラスターから同じデータレイクを操作している場合は、ツールごとのmask指定が影響していないかを見る必要があります。

よくある失敗と対処法

失敗しやすいポイント症状対処法
親ディレクトリのExecute不足ファイルにReadがあるのに403になるルートから対象ファイルまで各階層に--Xを付与する
RBACが広すぎるACLで制限したのにアクセスできるStorage Blob Data Owner/Contributor/Readerのスコープを見直す
default ACLだけ変更した既存ファイルの権限が変わらない既存配下には再帰的にaccess ACLを更新する
アプリ登録のObject IDを使ったサービスプリンシパルがアクセスできないaz ad sp show --id <App ID> --query objectIdで取得したIDを使う
Shared KeyやSASで検証したACLの効果が確認できないMicrosoft Entra IDベースの認証でテストする
個人ユーザーをACLに大量追加した退職・異動時の修正が大変、上限に近づくMicrosoft Entraセキュリティグループに集約する
Portalだけで再帰反映しようとした既存配下に反映できないStorage Explorer、Azure CLI、PowerShell、SDKを使う
削除権限をファイルだけで判断した想定外に削除できる、または削除できない親ディレクトリのWriteとExecuteを確認する

管理者・開発者が今すぐ行うべき確認

今回の更新を受けて、まず行うべきことは大規模な移行ではなく、既存設定の棚卸しです。次の順番で確認すると、実害につながりやすい問題を見つけやすくなります。

優先度確認項目理由
対象ストレージアカウントでHNSが有効かACLが使える前提条件を確認するため
Azure RBACのロールとスコープACLより先に評価されるため
Shared KeyやSASで運用・検証していないかACLが効かないアクセス経路を見落とさないため
サービスプリンシパルのObject IDアプリ登録IDとの取り違えを防ぐため
default ACLと既存access ACLの差分既存データへ反映漏れが起きやすいため
個人単位のACLエントリ運用負荷とACL上限の問題を防ぐため
Storage Explorer利用時のblob/dfsエンドポイントプライベートエンドポイント環境で接続問題を防ぐため
sticky bitやmaskの利用有無高度な制御による想定外の挙動を確認するため

Access Control Lists in Azure Data Lake Storage – Azure Storageの今回の更新は、目立つ新機能追加というより、ACLの基本仕様を正しく理解して運用するための再確認と捉えるべきです。特に、Azure RBACとACLの評価順、default ACLの反映範囲、ディレクトリのExecute権限、サービスプリンシパルのObject ID、Shared Key/SAS利用時のACL無効化は、実務で障害や過剰権限につながりやすいポイントです。

まずは、対象のAzure Storageアカウントを一覧化し、HNSの有無、RBACロール、ACLエントリ、認証方式を確認してください。そのうえで、個人単位のACLをMicrosoft Entraセキュリティグループへ寄せ、既存データへの反映が必要な場合はAzure CLIやStorage Explorerで再帰更新を計画するのが、安全な次の一手です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次