DatabricksへのアクセスをIP制限する

これはなに?

DatabricksでIP制限するための手順メモ。
Azureを利用している場合は、P1ライセンスを持っていればAzureADの認証部分でも実施可能ですが、今回はDatabricksの機能を使ってIP制限します。

環境情報

  • クラウド: Azure
  • Databricks ライセンス: Premium

※ IP制限(IPアクセスリスト)はPremiumライセンスが必須

構成イメージ

f:id:ykoomaru:20210124091602p:plain

オフィス等の特定のIPからのみDatabricksへのアクセスを許可し、それ以外の場所からのアクセスを拒否するようIP制限する。

手順

IP制限は、DatabricksAPIから実施する必要があります。 DatabricksAPIの利用にはアクセストークンが必要なため、アクセストークンを払い出し、その後、APIを使ってIP制限の設定を実施します。

1. アクセストークンの払い出し

① Databricksコンソールにログインし、[User Settings] - [Generete New Token] をクリックする

f:id:ykoomaru:20210124092404p:plain

② Comment と Lifetime に任意の値を入れて、[Generate] をクリックする

f:id:ykoomaru:20210124092438p:plain

③ 表示されたアクセストークン情報をメモする

f:id:ykoomaru:20210124092523p:plain

上記でアクセストークンの払い出しは完了です。

2. IPアクセスリスト 設定

APIを実行するのはPostmanを利用していますが、Curlなど利用する場合は以下を参照ください。

Azure Databricks 個人用アクセストークンを使用した認証-Azure Databricks - Workspace | Microsoft Docs

① IPアクセスリスト 設定の確認

  • メソッド: Get
  • エンドポイント: https://<DatabricksのURL>/api/2.0/workspace-conf?keys=enableIpAccessLists
  • 認証(Bearer Token): <1で取得したアクセストークン>

<レスポンス >

{
    "enableIpAccessLists": null
}

一度も設定していない場合は、Nullが返ってきます。

② IP アクセスリスト機能を有効にする

  • メソッド: PATCH
  • エンドポイント: https://<DatabricksのURL>/api/2.0/workspace-conf?keys=enableIpAccessLists
  • 認証(Bearer Token): <1で取得したアクセストークン>
  • Body(Json) :
{
    "enableIpAccessLists": "true"
}

<レスポンス >

null

①の設定確認APIを実行すると"enableIpAccessLists"が"true"になっていることを確認できます。

③ IPアクセスリストにIP制限の設定を追加する
今回はブラックリストとします。

  • メソッド: Post
  • エンドポイント: https://<DatabricksのURL>/api/2.0/ip-access-lists
  • 認証(Bearer Token): <1で取得したアクセストークン>
  • Body(Json) :
{
    "label": "TestIpList",
    "list_type": "BLOCK",
    "ip_addresses": [
        "xxx.xxx.xxx.xxx/xx"
      ]
}

パラメータについては以下を参照してください。

f:id:ykoomaru:20210124095900p:plain

https://docs.microsoft.com/ja-jp/azure/databricks/security/network/ip-access-list#add-an-ip-access-list

<レスポンス>

{
    "ip_access_list": {
        "list_id": "xxxxx-xxxxx-xxxxx-xxxxx",
        "label": "TestIpList",
        "ip_addresses": [
            "xxx.xxx.xxx.xxx/xx"
        ],
        "address_count": 1,
        "list_type": "BLOCK",
        "created_at": 161144952xxxx,
        "created_by": 534873981924xxxx,
        "updated_at": 161144952xxxx,
        "updated_by": 534873981924xxxx,
        "enabled": true
    }
}

④ IPアクセスリスト一覧の取得
IP制限の設定は完了したので、設定の一覧の取得し、正しく設定されているか確認します。

  • メソッド: Get
  • エンドポイント: https://<DatabricksのURL>/api/2.0/ip-access-lists
  • 認証(Bearer Token): <1で取得したアクセストークン>

<レスポンス>

{
    "ip_access_list": {
        "list_id": "xxxxx-xxxxx-xxxxx-xxxxx",
        "label": "TestIpList",
        "ip_addresses": [
            "xxx.xxx.xxx.xxx/xx"
        ],
        "address_count": 1,
        "list_type": "BLOCK",
        "created_at": 161144952xxxx,
        "created_by": 534873981924xxxx,
        "updated_at": 161144952xxxx,
        "updated_by": 534873981924xxxx,
        "enabled": true
    }
}

③のレスポンスと同じ内容が返ってくると思いますが、設定内容に誤りがないか確認してください。
複数IPリストを登録している場合は、複数の項目が返ってきます。

IPリストを後から更新、削除することも可能です。設定が誤っていた場合には以下実施してみてください。
update-an-ip-access-list
delete-an-ip-access-list

動作確認

最後に設定が有効か確認します。
アクセスリストで許可されていないIPよりDatabricksにアクセスして、以下のような画面になれば設定が有効です。

f:id:ykoomaru:20210124100907p:plain

参考

IP アクセスリスト-Azure Databricks - Workspace | Microsoft Docs