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