Google Cloud Storage に接続するためのストレージ認証情報を作成する

この記事では、Google Cloud Storage に接続するためにUnity Catalogでストレージ認証情報を作成する方法について説明します。

テーブルとボリュームを保持する基盤となるクラウド ストレージへのアクセスを管理するために、Unity Catalog は次のオブジェクト タイプを使用します。

  • ストレージ資格情報は、クラウドストレージにアクセスするための長期的なクラウド資格情報をカプセル化します。

  • 外部ロケーションには、ストレージ資格情報とクラウドストレージパスへの参照が格納されています。

詳細については、 Unity Catalogを使用してクラウドオブジェクトストレージに接続する」を参照してください。

Unity Catalog は、 Databricks on Google Cloudの 2 つのクラウド ストレージ オプション、Google Cloud Storage (GCS) バケットと Cloudflare R2 バケットをサポートしています。 Cloudflare R2は主に、データエグレス料金を回避したいDelta Sharingユースケースを対象としています。 GCS は、他のほとんどのユースケースに適しています。 この記事では、GCS のストレージ認証情報の作成に焦点を当てます。 Cloudflare R2 については、「Cloudflare R2 に接続するためのストレージ資格情報を作成する」を参照してください。

GCS バケットにアクセスするためのストレージ認証情報を作成するには、バケットの IAMroll を Databricks で生成された Google クラウド サービス アカウントに割り当てることで、Unity Catalog にバケットへの読み取りと書き込みの機能を与えます。

要件

Databricksにおいて:

  • Unity Catalogが有効化されたDatabricksワークスペース

  • CREATE STORAGE CREDENTIAL ワークスペースにアタッチされているUnity Catalogメタストアに対する権限。 アカウント管理者とメタストア管理者には、デフォルトでこの権限が与えられます。

Google クラウド アカウントで:

  • データにアクセスするワークスペースと同じリージョンにある GCS バケット

  • そのバケットのアクセス ポリシーを変更する権限。

カタログエクスプローラを使用したGoogleクラウドサービスアカウントの生成

  1. Unity Catalogが有効な Databricks ワークスペースに、メタストアに対するCREATE STORAGE CREDENTIAL権限を持つユーザーとしてログインします。

    この権限はメタストア管理者ロールとアカウント管理者ロールの両方に含まれています。

  2. サイドバーで [カタログ アイコン カタログ ] をクリックします 。

  3. [ カタログ ] ウィンドウの上部にある [追加アイコンまたはプラスアイコン 追加 ] アイコンをクリックし、メニューから [ ストレージ認証情報の追加] を選択します。

    このオプションは、 CREATE STORAGE CREDENTIAL 権限がない場合には表示されません。

    または、クイック アクセスページで[外部データ >]ボタンをクリックし、 [ストレージ資格情報] タブに移動して[資格情報の作成]を選択します。

  4. [新しいストレージ認証情報の作成]ダイアログで、[認証情報の種類]として[Google Cloud Storage]を選択します。

  5. [ストレージ資格情報名] とオプションのコメントを入力します。

  6. (オプション)このストレージ資格情報を使用する外部ロケーションへの読み取り専用アクセス権をユーザーに付与する場合は、[ 読み取り専用] を選択します。 詳細については、「 ストレージ資格情報を読み取り専用としてマークする」を参照してください。

  7. [保存]をクリックします。

    Databricks によってストレージ資格情報が作成され、Google クラウド サービス アカウントが生成されます。

  8. [ストレージ資格情報が作成されました] ダイアログで、サービス アカウント ID (電子メール アドレスの形式) をメモし、[完了]をクリックします。

  9. (オプション) ストレージ資格情報を特定のワークスペースにバインドします。

    デフォルトでは、権限を持つユーザーは誰でも、メタストアに接続された任意のワークスペースでストレージ資格情報を使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、ワークスペースタブに移動してワークスペースを割り当てます。 「(オプション) 特定のワークスペースにストレージ資格情報を割り当てる」を参照してください。

サービス アカウントのアクセス許可を構成する

  1. Google Cloud コンソールに移動し、Databricks ワークスペースからアクセスする GCS バケットを開きます。

    バケットは Databricks ワークスペースと同じリージョンにある必要があります。

  2. [ アクセス許可 ] タブで、[ + アクセス権の付与 ] をクリックし、サービス アカウントに次のロールを割り当てます。

    • ストレージレガシーバケットリーダー

    • ストレージオブジェクト管理者

    サービスアカウントのメールアドレスをプリンシパル識別子として使用します。

これで、このストレージ資格情報を参照する 外部ロケーションを作成できます

(オプション) 特定のワークスペースにストレージ認証情報を割り当てる

プレビュー

この機能は パブリックプレビュー版です。

デフォルトでは、ストレージ資格情報はメタストア内のすべてのワークスペースからアクセスできます。 つまり、ユーザーにそのストレージ資格情報に対する権限 ( CREATE EXTERNAL LOCATIONなど) が付与されている場合、そのユーザーはメタストアに接続されている任意のワークスペースからその権限を行使できます。 ワークスペースを使用してユーザー データ アクセスを分離する場合は、特定のワークスペースからのみストレージ資格情報へのアクセスを許可することをお勧めします。 この機能は、ワークスペース バインディングまたはストレージ資格情報の分離と呼ばれます。

ストレージ資格情報を特定の ワークスペース にバインドする一般的なユース ケースは、クラウド管理者が 本番運用 クラウド アカウント 資格情報を使用してストレージ資格情報を構成し、 Databricksユーザーがこの資格情報を使用して 本番運用 ワークスペース にのみ外部ロケーションを作成できるようにするシナリオです。

ワークスペース バインディングの詳細については、 「(オプション) 特定のワークスペースに外部ロケーションを割り当てる」および「特定のワークスペースへのカタログ アクセスを制限する」を参照してください。

注:

ストレージ資格情報に対する権限が実行されるときに、ワークスペース バインディングが参照されます。 たとえば、ユーザーがストレージ資格情報を使用して外部ロケーションを作成した場合、ストレージ資格情報のワークスペース バインディングは、外部ロケーションが作成された場合にのみチェックされます。 外部ロケーションが作成されると、ストレージ資格情報で構成されたワークスペース バインディングとは独立して機能します。

ストレージ資格情報を1つ以上のワークスペースにバインドする

特定のワークスペースにストレージ資格情報を割り当てるには、カタログ エクスプローラーまたは Databricks CLI を使用できます。

必要なアクセス許可: メタストア管理者またはストレージ資格情報の所有者。

注:

メタストア管理者は、カタログ エクスプローラーを使用してメタストア内のすべてのストレージ資格情報を表示できます。また、ストレージ資格情報の所有者は、ストレージ資格情報が現在のワークスペースに割り当てられているかどうかに関係なく、メタストア内で所有するすべてのストレージ資格情報を表示できます。 ワークスペースに割り当てられていないストレージ資格情報はグレー表示されます。

  1. メタストアにリンクされているワークスペースにログインします。

  2. サイドバーで [カタログ アイコン カタログ ] をクリックします 。

  3. [ カタログ ] ウィンドウの上部にある [ 歯車アイコン ] 歯車アイコンをクリックし、[ ストレージ認証情報] を選択します。

    または、クイック アクセスページで[外部データ >]ボタンをクリックし、 [ストレージ資格情報]タブに移動します。

  4. ストレージ資格情報を選択し、 「ワークスペース」タブに移動します。

  5. ワークスペースタブで、 [すべてのワークスペースにアクセス権がある]チェックボックスをオフにします。

    ストレージ資格情報がすでに 1 つ以上のワークスペースにバインドされている場合、このチェックボックスはすでにオフになっています。

  6. 「ワークスペースへの割り当て」をクリックし、割り当てるワークスペースを入力または検索します。

アクセスを取り消すには、ワークスペースタブに移動し、ワークスペースを選択して、 「取り消し」をクリックします。 すべてのワークスペースからのアクセスを許可するには、 「すべてのワークスペースにアクセス権を与える」チェックボックスをオンにします。

ワークスペースにストレージ資格情報を割り当てるには、2 つのDatabricks CLIコマンド グループと 2 つのステップが必要です。

次の例では、 <profile-name> Databricks 認証構成プロファイルの名前に置き換えます。 個人アクセストークンを生成したワークスペースのワークスペースインスタンス名とワークスペース ID に加えて、個人アクセストークンの値も含める必要があります。 Databricks個人アクセストークン認証を参照してください。

  1. storage-credentialsコマンド グループのupdateコマンドを使用して、ストレージ資格情報のisolation modeISOLATEDに設定します。

    databricks storage-credentials update <my-storage-credential> \
    --isolation-mode ISOLATED \
    --profile <profile-name>
    

    デフォルトのisolation-modeは、メタストアにアタッチされているすべてのワークスペースに対してOPENです。

  2. workspace-bindingsコマンド グループのupdate-bindingsコマンドを使用して、ワークスペースをストレージ資格情報に割り当てます。

    databricks workspace-bindings update-bindings storage-credential <my-storage-credential> \
    --json '{
      "add": [{"workspace_id": <workspace-id>}...],
      "remove": [{"workspace_id": <workspace-id>}...]
    }' --profile <profile-name>
    

    ワークスペース バインディングを追加または削除するには、 "add"プロパティと"remove"プロパティを使用します。

    注:

    読み取り専用バインディング (BINDING_TYPE_READ_ONLY) は、ストレージ資格情報には使用できません。 したがって、ストレージ資格情報のバインドに binding_type を設定する理由はありません。

ストレージ資格情報のすべてのワークスペース割り当てを一覧表示するには、 workspace-bindingsコマンド グループのget-bindingsコマンドを使用します。

databricks workspace-bindings get-bindings storage-credential <my-storage-credential> \
--profile <profile-name>

ワークスペースからストレージ資格情報のバインドを解除する

Catalog Explorer または workspace-bindings CLIコマンド グループを使用してストレージ資格情報へのワークスペース アクセスを取り消す手順については、「ストレージ資格情報を 1 つ以上のワークスペースにバインドする」を参照してください。

次のステップ

ストレージ資格情報を使用するアクセス許可を表示、更新、削除、および他のユーザーに付与できます。 「 ストレージ資格情報の管理」を参照してください。

ストレージ資格情報を使用して外部ロケーションを定義できます。 Google Cloud Storage に接続するためのストレージ認証情報を作成するをご覧ください。