Cloud Service
Azure Data Lake Storage
Blob Storage に階層型名前空間を足し、本物のディレクトリと細粒度アクセス制御で大規模分析を支えるデータレイク基盤。
- 1.Blob に階層型名前空間を加えた分析向けデータレイク基盤。
- 2.本物のフォルダと POSIX 風 ACL でディレクトリ操作が高速。
- 3.AWS の S3 と Lake Formation を組み合わせた立ち位置。
解決する課題
生データから加工済みデータまでを 1 か所に集約し、ファイル指向の分析エンジンから高速かつ安全にアクセスできるストレージ層を提供します。Blob Storage 単体ではフォルダが見かけ上の概念にすぎず、ディレクトリ単位の操作や細かなアクセス制御が苦手でした。Azure Data Lake Storage(ADLS Gen2)はこれを解決します。
- 構造化・半構造化・非構造化データを 種類を問わず大量に集約したい
- 階層型のディレクトリで フォルダ単位の移動・リネーム・権限付与を高速に行いたい
- Synapse / Databricks / Fabric / HDInsight などの 分析エンジンから直接読み書きしたい
- フォルダ/ファイル単位の 細粒度アクセス制御(POSIX 風 ACL) をかけたい
主要概念と用語
- ADLS Gen2: Blob Storage に階層型名前空間を加えたもの。独立サービスではなく Blob の上位機能で、Blob の冗長性・アクセス層・ライフサイクル管理をそのまま継承する
- 階層型名前空間(HNS): 本物のディレクトリ構造を持たせる設定。ストレージアカウント作成時に有効化する。有効化後はフラット名前空間へ戻せない
- ファイルシステム(コンテナー): ADLS のルート。Blob でいうコンテナーに相当し、配下にディレクトリとファイルを持つ
- ディレクトリ/ファイル: HNS により実体としてのフォルダとして扱われ、リネームや移動がメタデータ操作で完結する
- RBAC: ストレージアカウントやコンテナー単位の粗い権限制御。Microsoft Entra ID のロールで付与する
- ACL(アクセス制御リスト): ディレクトリ/ファイル単位の細かい権限。読み取り・書き込み・実行を POSIX 風に指定する
- デュアルエンドポイント: 同じデータを Blob API(dfs ではなく blob)と Data Lake API(dfs)の両方から操作できる
仕様・制限・クォータ
- 階層型名前空間は作成時のみ有効化可能。後からフラットへ戻すことはできない設計判断になる
- 容量・1 ファイルの最大サイズ・スループットは Blob Storage の上限に準じ、事実上ペタバイト級まで拡張できる
- 権限は RBAC(粗い)と ACL(細かい)の組み合わせで評価される。RBAC で許可されればその時点で許可され、許可されない場合に ACL が評価される
- 1 つのファイル/ディレクトリに設定できる ACL エントリ数には上限があるため、原則は Entra ID のグループに対して付与する
- アクセス層(Hot / Cool / Cold / Archive)やライフサイクル管理、冗長性オプションは Blob と共通
内部の仕組み
ADLS Gen2 の核心は 階層型名前空間(HNS) です。HNS が無効なフラット名前空間では、raw/2026/data.csv のような名前は単なるキーで、スラッシュはフォルダ風に見せる区切り文字にすぎません。このためフォルダのリネームは、内部的に全オブジェクトをコピーし直す重い操作になります。
HNS を有効にすると、ディレクトリが実体としてのメタデータとして管理されます。フォルダのリネームや移動がディレクトリ単位の 1 回のメタデータ操作で完結し、配下に大量のファイルがあっても高速です。これが Spark や Hive のように「中間結果を一時フォルダに書いてから最終フォルダへリネームする」分析処理と相性が良い理由です。
データの実体は Blob Storage と同じ分散オブジェクトストアに格納され、冗長化(LRS / ZRS / GRS など)や暗号化もそのまま継承されます。アクセス時は RBAC で粗く、ACL で細かくという二段構えで権限が評価されます。
ADLS Gen2 は独立した別サービスではなく、ストレージアカウントで階層型名前空間を有効化したものです。そのため Blob のアクセス層・ライフサイクル管理・冗長性・暗号化をそのまま使えます。AWS でたとえるなら、オブジェクトストレージの S3 に、レイク向けのガバナンスとして Lake Formation を重ねるイメージです。
設計パターン / ベストプラクティス
- メダリオン構成: Bronze(生データ)→ Silver(クレンジング済み)→ Gold(集計済み)をディレクトリで分け、分析の段階ごとに整理する
- 権限はグループに付与: ACL エントリ数の上限を避けるため、個人ユーザーではなく Entra ID のセキュリティグループに権限を割り当てる
- 小さなファイルを避ける: 大量の小ファイルは分析エンジンのオーバーヘッドになる。Parquet / Delta など列指向+適切なファイルサイズに集約する
- アクセス層とライフサイクル: アクセスの少ない過去データは Cool / Cold / Archive へ自動移行し、保存コストを抑える
- 分析エンジンから直結: Synapse / Databricks / Fabric から ADLS を直接マウントして読み書きし、データの二重持ちを避ける
運用・監視
- Azure Monitor / Storage のメトリクスで容量・トランザクション・レイテンシ・可用性を監視する
- 診断設定でリソースログを Log Analytics や別のストレージへ送り、誰がどのパスへアクセスしたかを監査する
- 大量データの移行・同期には AzCopy を使い、オンプレや他クラウドからの取り込みを高速化する
- 「403 / AuthorizationFailure」は RBAC ロール未割り当て・ACL の権限不足・ネットワーク規則が大半。RBAC と ACL の両方を確認する
コスト
課金は Blob Storage と同じ考え方で、「保存量(GB)」に加えて「トランザクション数」「取り出し」「データ転送(下り)」にも課金されます。アクセス頻度に応じてアクセス層を使い分けるのがコスト最適化の中心です。
| アクセス層 | 想定アクセス | 特徴 |
|---|---|---|
| Hot | 高頻度 | 保存単価は高い/取り出しは安い。標準・低レイテンシ |
| Cool | 低頻度(30日以上保持) | 保存安い/取り出し課金あり。即時アクセス可 |
| Cold | まれ(90日以上保持) | Cool よりさらに保存安い/取り出しは高い。即時アクセス可 |
| Archive | アーカイブ(180日以上) | 最安。オフライン。読むにはリハイドレートが必要 |
分析が進むほど生データへのアクセスは減ります。ライフサイクル管理ルールで、一定期間アクセスのない Bronze 層を自動で Cool や Archive へ移行すると、保存コストを大きく下げられます。一方で頻繁に読む Gold 層は Hot のままにして取り出しコストを抑えます。
セキュリティ
- アクセス制御は RBAC(粗い)と ACL(細かい)の二段構え。コンテナー単位は RBAC、フォルダ/ファイル単位は ACL で最小権限を徹底する
- アプリからは マネージド ID + Entra ID 認証を基本とし、アカウントキーや接続文字列の直書きを避ける
- 保存時暗号化 SSE は既定で常時有効。必要に応じて Key Vault のカスタマーマネージドキー(CMK) を使う。転送時は TLS を強制する
- プライベートエンドポイントでストレージをプライベート IP 化し、パブリックインターネットからの到達を遮断する
個々のユーザーに対して大量の ACL を直接付与するのは NG です。ACL のエントリ数には上限があり、運用が破綻します。Entra ID のセキュリティグループに ACL を付与し、メンバーの増減はグループ側で管理します。アカウントキーの直書きも避け、マネージド ID + RBAC + ACL で安全に制御します。
Well-Architected の観点
- コスト最適化: アクセス層とライフサイクル管理で、アクセス頻度の低いデータを自動的に安価な層へ移し、保存コストを継続的に下げる
- 信頼性: 冗長性オプション(LRS / ZRS / GRS / GZRS)で、ゾーン障害やリージョン障害に対する備えを選択する
- セキュリティ: RBAC と ACL の組み合わせ、マネージド ID、プライベートエンドポイント、保存時・転送時暗号化で多層防御を構成する
- パフォーマンス効率: 階層型名前空間によるディレクトリ操作の高速化と、列指向フォーマット・適切なファイルサイズで分析を効率化する
試験で問われるポイント
- ADLS Gen2 は独立サービスではなく、ストレージアカウントで階層型名前空間(HNS)を有効化したものである
- HNS は作成時のみ有効化可能で、後からフラット名前空間へは戻せない
- 権限は RBAC(粗い・コンテナー単位)と ACL(細かい・フォルダ/ファイル単位)の組み合わせで評価される
- ACL は原則 Entra ID のグループに付与する(エントリ数に上限があるため)
- HNS によりディレクトリのリネーム・移動がメタデータ操作で高速になり、Spark などの分析処理と相性が良い
- AWS では S3 + Lake Formation に近い位置づけ
関連サービス・比較
| 観点 | Azure Data Lake Storage(ADLS Gen2) | Amazon S3 + Lake Formation |
|---|---|---|
| 基盤 | Blob Storage に階層型名前空間を追加 | S3 オブジェクトストレージ |
| フォルダ | 実体としてのディレクトリを持つ | 見かけ上のプレフィックス(区切り文字) |
| 細粒度の権限 | RBAC + POSIX 風 ACL | Lake Formation の権限とバケットポリシー |
| 主な分析連携 | Synapse / Databricks / Fabric | Athena / Glue / EMR / Redshift Spectrum |
| アクセス層 | Hot / Cool / Cold / Archive | Standard / IA / Glacier 系 |
| 権限付与 | Entra ID + RBAC / ACL | IAM / Lake Formation |
ハンズオン / CLI例
# リソースグループを作成
az group create --name demo-rg --location japaneast
# 階層型名前空間を有効化してストレージアカウントを作成(ADLS Gen2 化)
az storage account create \
--name mydatalake2026 \
--resource-group demo-rg \
--location japaneast \
--sku Standard_GRS \
--kind StorageV2 \
--hierarchical-namespace true \
--min-tls-version TLS1_2 \
--allow-blob-public-access false
# ファイルシステム(コンテナー)を作成(Entra ID 認証を使用)
az storage fs create \
--name lake \
--account-name mydatalake2026 \
--auth-mode login
# ディレクトリを作成(メダリオン構成の Bronze 層)
az storage fs directory create \
--name raw/bronze \
--file-system lake \
--account-name mydatalake2026 \
--auth-mode login
# ファイルをアップロード
az storage fs file upload \
--source ./data.csv \
--path raw/bronze/data.csv \
--file-system lake \
--account-name mydatalake2026 \
--auth-mode login
# ディレクトリに ACL を設定(読み取り・実行を付与)
az storage fs access set \
--acl "user::rwx,group::r-x,other::---" \
--path raw/bronze \
--file-system lake \
--account-name mydatalake2026 \
--auth-mode login
Azure Service
Azure Data Lake Storageを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
分析
比較で見る軸
クラウド: Azure / カテゴリ: 分析 / 難易度: basic
導入後に効く点
本物のフォルダと POSIX 風 ACL でディレクトリ操作が高速。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Azure
- カテゴリ
- 分析
- 難易度
- basic
- 関連資格
- —
- 設計柱
- cost
判断チェックリスト
- 自社の用途が「分析 / cost」に近いか確認する。
- 強みである「Blob に階層型名前空間を加えた分析向けデータレイク基盤。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。