# 概要
DatabricksからAzure Data Lake Storage (ADLS gen2) へのアクセス手順についてまとめたいと思います。
1. Azure上での認証方式の選択
ストレージアクセスの際の認証方式をまずは決めます。主に以下の3つがあります。
- ストレージアカウントキー (今回はこちらの方法)
- SAS Token
- サービスプリンシパル
どの認証方式を利用するべきか、簡単な比較を作ってみました。(個人的主観が含まれます)
認証方式 | 設定対象範囲 | 設定の容易さ | お勧め用途 | 概要 |
---|---|---|---|---|
ストレージアカウントキー | ストレージアカウント全体 | ◎ | 個人利用・検証環境 | ストレージアカウントに発行されるキーを利用 |
SAS Token | コンテナ | ○ | 検証環境・小規模環境 | コンテナあるいはストレージアカウント毎に発行ができ、有効期限も設定できるため検証環境での利用が便利 |
サービスプリンシパル | コンテナ | △ | 本番環境 | 設定は少し複雑だが、アプリケーションに権限ロールを付与して運用するため、複数コンテナの管理などが可能 |
今回はストレージアカウントキー認証を利用した設定手順をご紹介します。
2. Azure Data Lake Storage の作成
まずは、オブジェクトストレージを作成します。
作成手順については、こちらをご覧ください。
ADLS gen2 Storageの作成
3. ストレージアカウントキーの取得
キーは2つまでとなっており、またストレージアカウントで管理するコンテナ全てに対するアクセス権が与えられてしまうため、本番で利用する場合は他の認証方式を検討される事をお勧めします。
4. Databricksからのアクセス方法
Databricksからのアクセス方法としては、DBFS経由とDirect Accessの2つのアクセス方法があります。
またDirectAccessの場合、ノートブック上のセッション資格とクラスターに設定するクラスター資格の2つの設定方法があります。それぞれの特徴は以下の通りです。
|アクセス方法|資格|設定箇所|有効期間|アクセスユーザー対象範囲|
|:--------------------+---+---+-------+---+----------:|
|DBFS経由||Notebook(一度誰かがすればOK)|umountするまで永続|ワークスペース内の全ユーザー|
|Direct|セッション資格|Notebook(毎回実行)|Notebookセッション中|ノートブック利用者|
|Direct|クラスター資格|Cluster設定|Cluster起動中|Cluster利用者|
また、設定時にはアカウントキーがそのまま見えないように、シークレット設定することが可能です。これによりキーを安全に管理することができます。シークレット設定をする場合は、追加でシークレットスコープ設定が必要になります。詳細はこちらの手順をご覧ください
5. サンプルノートブック
DBFS経由でのアクセス設定
DBFS経由でアクセスさせる場合は、DBFSの /mnt 配下にストレージがマウントされます。これによりワークスペース利用者は誰でもこのストレージにアクセスすることが可能になります。また一度設定すれば umount しない限りノートブックを閉じても、クラスターが切り替わってもアクセスすることができるため、全員で利用するストレージを設定する際にお勧めな方法です。
Directアクセス(セッション資格)設定
DBFSを利用せずに、Directアクセスさせることも勿論可能です。この場合2つの方法があり、ノートブック上で認証設定を行いアクセスするセッション資格設定と、クラスター上で設定することでクラスター利用者全員が利用できるようにするクラスター資格設定です。
Directアクセス(クラスター資格)設定
アクセスキーをクラスター上のSpark Configにて設定することで、クラスターを利用するユーザーは簡単にストレージにアクセスできるようになります。この場合クラスターのアクセス権限にてユーザーのパーミッション管理を行えます。