雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

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