0
0

Azure Databricks Unity Catalog の Databricks アクセスコネクタによる認証時における Azure Storage のファイヤーウォール設定による挙動の確認

Last updated at Posted at 2023-08-25

概要

Azure Databricks Unity Catalog の Databricks アクセスコネクタによる認証時における Azure Storage のファイヤーウォール設定による挙動の確認結果を共有します。検証結果から、Azure Stoarge のファイヤーウォールを設定する際には、リソース インスタンス、および、仮想ネットワークを登録することがよさそうです。本記事では、検証結果と検証方法を記述します。

Data Explorer のVolume UI にて、GUI によりアップロードとダウンロード不可であることは次の記事で検証しております。

検証結果概要

検証結果から、Azure Databricks Unity Catalog の Databricks アクセスコネクタによる Azure Storage への認証を行うには、仮想ネットワークとリソース インスタンスが必要となるようです。

# 設定値 要否 挙動からの推測
1 仮想ネットワーク ストレージのファイルを参照する際に必要
2 リソース インスタンス ストレージのリストを取得する際に必要

Databricks Unity にて、Databricks アクセスコネクタ経由での挙動を確認するために、ストレージから接続できることを確認するために次のような検証を行いました。

# 検証項目 目的
1 Data Explorer での表示可否 ストレージのリストを取得可能であるかを確認。
2 list の実行可否 ストレージのリストを取得可能であるかを確認。
3 dbutils.fs.ls の実行可否 dbutils にて、ストレージのリストを取得可能であるかを確認。
4 SELECT の実行可否 ストレージのファイルをよむことができるかを確認。

Azure Storage のファイヤーウォールにて次の機能の設定有無のパターンを検証しました。

# 設定値 概要
1 仮想ネットワーク Vnet インジェクション先の仮想ネットワークを登録。
2 リソース インスタンス Databricks アクセスコネクタを登録。

設定値に応じた検証項目の結果は次のようになりました。仮想ネットワークとリソース インスタンスのいずれの設定も必要となるという解釈をしました。

# 検証設定値 Data Explorer での表示可否 list の実行可否 dbutils.fs.ls の実行可否 SELECT の実行可否
1 仮想ネットワーク設定あり、リソース インスタンス設定あり
2 仮想ネットワーク設定あり、リソース インスタンス設定なし × × × ×
3 仮想ネットワーク設定なし、リソース インスタンス設定あり × ×

検証方法とその結果

事前準備

ファイヤーウォールを設定した 3 つのストレージを作成と設定

検証設定値に応じた3つストレージを作成するために次の手順を実行しました。ファイヤーウォールの設定の検証設定値に応じた設定を行いました。

  1. ストレージアカウント
  2. externalというコンテナーを作成
  3. testというフォルダを作成して、data_file__1.csvというファイルを配置
  4. ファイヤーウォールの設定
    1. 仮想ネットワークに Databricks をインジェクションしている仮想ネットワークのpublic-subnetサブネットを設定
    2. リソース インスタンスに Databricks アクセスコネクタを設定
    3. 信頼されたサービスの一覧にある Azure サービスがこのストレージ アカウントにアクセスすることを許可します。のチェックを外す

パターン1(仮想ネットワーク設定あり、リソース インスタンス設定あり)の設定値

image.png

パターン2(仮想ネットワーク設定あり、リソース インスタンス設定なし)の設定値

image.png

パターン3(仮想ネットワーク設定なし、リソース インスタンス設定あり)の設定値

image.png

data_file__1.csvのデータ

str_col,int_col,date_col
"abc",1,2000-12-31
"def",2,2001-01-01
"ghi",3,2001-01-02
"jkl",4,2001-01-03
"mno",5,2001-01-04
"pqr",6,2001-01-05
"stu",7,2001-01-06
"vwx",8,2001-01-07
"yz_",9,2001-01-08
"abc",10,2001-01-09

Databricks にて 3 つのストレージを外部ストレージとして登録

次の画像で示すように、外部ロケーションとして3つのストレージを登録しました。

image.png

検証結果

パターン1(仮想ネットワーク設定あり、リソース インスタンス設定あり)の検証結果

Data Explorer での表示可否

表示できることを確認。

image.png

list の実行可否

表示できることを確認。

%sql
list 'abfss://external@dbucexternal123pattern1.dfs.core.windows.net/'

image.png

dbutils.fs.ls の実行可否

表示できることを確認。

dbutils.fs.ls('abfss://external@dbucexternal123pattern1.dfs.core.windows.net/')

image.png

SELECT の実行可否

ファイルを参照できることを確認。

%sql
SELECT
  *
  FROM
    csv.`abfss://external@dbucexternal123pattern1.dfs.core.windows.net/test/data_file__1.csv`
Table

image.png

パターン2(仮想ネットワーク設定あり、リソース インスタンス設定なし)の検証結果

Data Explorer での表示可否

表示できないことを確認。

image.png

list の実行可否

表示できないことを確認。

%sql
list 'abfss://external@dbucexternal123pattern2.dfs.core.windows.net/'
AnalysisException: [RequestId=ad1cb8d5-fb51-4a65-8a26-0a1c7a2227bd ErrorClass=INVALID_STATE.UC_CLOUD_STORAGE_ACCESS_FAILURE] Failed to access cloud storage: AbfsRestOperationException exceptionTraceId=018566c0-73db-45f6-b037-489561f19f2c

image.png

dbutils.fs.ls の実行可否

表示できないことを確認。

%sql
list 'abfss://external@dbucexternal123pattern2.dfs.core.windows.net/'
Failed to acquire a SAS token for list on / due to java.util.concurrent.ExecutionException: com.databricks.sql.managedcatalog.acl.UnauthorizedAccessException: PERMISSION_DENIED: request not authorized

image.png

SELECT の実行可否

ファイルを参照できないことを確認。

%sql
SELECT
  *
  FROM
    csv.`abfss://external@dbucexternal123pattern2.dfs.core.windows.net/test/data_file__1.csv`
AnalysisException: Failed to acquire a SAS token for get-status on /test/data_file__1.csv due to java.util.concurrent.ExecutionException: com.databricks.sql.managedcatalog.acl.UnauthorizedAccessException: PERMISSION_DENIED: request not authorized; line 4 pos 4

image.png

パターン3(仮想ネットワーク設定なし、リソース インスタンス設定あり)の検証結果

Data Explorer での表示可否

表示できることを確認。

image.png

list の実行可否

表示できることを確認。

%sql
list 'abfss://external@dbucexternal123pattern3.dfs.core.windows.net/'
Table

image.png

dbutils.fs.ls の実行可否

表示できないことを確認。

dbutils.fs.ls('abfss://external@dbucexternal123pattern3.dfs.core.windows.net/')
Operation failed: "This request is not authorized to perform this operation.", 403, GET, https://dbucexternal123pattern3.dfs.core.windows.net/external?upn=false&resource=filesystem&maxResults=5000&timeout=90&recursive=false&st=2023-08-24T05:07:10Z&sv=2020-02-10&ske=2023-08-24T07:07:10Z&sig=XXXXX&sktid=095ca098-c723-478f-9bb6-c764031b159e&se=2023-08-24T06:30:27Z&sdd=0&skoid=3af96b21-fc7f-4bfeXXXXXXXXXXXXXXXXXX&spr=https&sks=b&skt=2023-08-24T05:07:10Z&sp=rl&skv=2020-02-10&sr=c, AuthorizationFailure, "This request is not authorized to perform this operation. RequestId:2fe458dd-201f-008b-6a4c-d64f6a000000 Time:2023-08-24T05:30:29.5802436Z"

image.png

SELECT の実行可否

ファイルを参照できないことを確認。

%sql
SELECT
  *
  FROM
    csv.`abfss://external@dbucexternal123pattern3.dfs.core.windows.net/test/data_file__1.csv`
AnalysisException: Operation failed: "This request is not authorized to perform this operation.", 403, HEAD, https://dbucexternal123pattern3.dfs.core.windows.net/external/test/data_file__1.csv?upn=false&action=getStatus&timeout=90&st=2023-08-24T05:07:10Z&sv=2020-02-10&ske=2023-08-24T07:07:10Z&sig=XXXXX&sktid=095ca098-c723-478f-9bb6-c764031b159e&se=2023-08-24T06:30:32Z&sdd=2&skoid=3af96b21-fc7f-4bfeXXXXXXXXXXXXXXXXXX&spr=https&sks=b&skt=2023-08-24T05:07:10Z&sp=rl&skv=2020-02-10&sr=d; line 4 pos 4

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0